Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Реакт 18 всё сломал (Новый свитч/роут и навигация) #12

Open
AndrianK opened this issue Jun 14, 2022 · 3 comments

Comments

@AndrianK
Copy link

AndrianK commented Jun 14, 2022

Решения для урока (этап - написание Роута)
Мой индекс.js :

import React from 'react';
import App from './App';
import {StrictMode} from 'react';
import { createRoot } from 'react-dom/client';

const rootElement = document.getElementById('root');
const root = createRoot(rootElement); // createRoot(container!) if you use TypeScript
root.render(
    <StrictMode>
        <App />
    </StrictMode>,
);

AppRoute:

import React from 'react';

import {
    Routes,
    Route
} from "react-router-dom";
import {authRoutes,publicRoutes} from "../routes";
import {SHOP_ROUTE} from "../utils/consts";


const AppRouter = () => {
    //const iaAuth = false
    return(
           <Routes>

                {authRoutes.map(({path, Component}) =>
                     <Route key = {path}  path={path} element={<Component/>} exact/>
                )}
                {publicRoutes.map(({path , Component}) =>
                   <Route key = {path} path = {path} element={<Component/>} exact/>
                )}
            </Routes>
    );
};
export default AppRouter;

Константы(может и не обязательно менять, не проверял):

export const ADMIN_ROUTE = 'admin' export const LOGIN_ROUTE = 'login' export const REG_ROUTE = 'registration' export const SHOP_ROUTE = '/' export const BASKET_ROUTE = 'basket' export const DEVICE_ROUTE = 'device'

@AndrianK
Copy link
Author

AndrianK commented Jun 14, 2022

import React, {createContext} from 'react';
import App from './App';
import { createRoot } from 'react-dom/client';
import UserStore  from './Store/UserStore'
import DeviceStore from "./Store/DeviceStore"; 


export const Context = createContext(null)
const rootElement = document.getElementById('root');
const root = createRoot(rootElement); // createRoot(container!) if you use TypeScript
root.render(
    <Context.Provider value={{
        user: new UserStore(),
        device: new DeviceStore()
    }}>
        <App />
    </Context.Provider>,
);

Добавил контекст

НавБар:
ms-auto вместо ml-auto

@AndrianK
Copy link
Author

AndrianK commented Jun 16, 2022

Вместо History (2:06:00):

import {useNavigate} from "react-router-dom";
const histoty= useNavigate() //возможно это считается дурным тоном, но да ладно
<Button variant={"outline-light"} onClick={() => history(ADMIN_ROUTE)}>Админ Панель

@exodie
Copy link

exodie commented Aug 24, 2022

import { useNavigate } from 'react-router-dom';

const navigate = useNavigate();

navigate('/YOUR_NEEDED_LINK', { replace: true, state: IF_NEEDED}), тоже неплохо, * но лучше прямые ссылки в navigate не использовать.

@AndrianK AndrianK changed the title Реакт 18 всё сломал Реакт 18 всё сломал (Новый роут и навигация) Jan 28, 2024
@AndrianK AndrianK changed the title Реакт 18 всё сломал (Новый роут и навигация) Реакт 18 всё сломал (Новый свитч/роут и навигация) Jan 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants