FoxYulya
@FoxYulya

Есть Route но они не совмем так работают как нужно?

Есть Route но они не совмем так работают как нужно, Нужно что бы "/dashboard" была фиксированной после логинки, а внктри нее менялись страницы, но они почему то открываються без /dashboard.
function App() {
  const { getUser, user, setUser  } = useUser()
  return (
    <Router user={user} getUser={getUser} setUser={setUser}>
      <Routes>
        <Route  path="/"  exact element={<LoginForm user={user} getUser={getUser} />} />
        <Route path="login" exact element={<LoginForm user={user} getUser={getUser} />}/>
        <Route path="/dashboard" element={<PrivateRoute user={user}><Dashboard user={user} /></PrivateRoute>} />
        <Route path='/acts' element={<PrivateRoute user={user}><ActsPage user={user} /></PrivateRoute>} />
   </Routes>
    </Router>
  );
}
export default App;

вот код 
export const PrivateRoute = ({ token, children }) => {
  if (
    localStorage.getItem('token')) {
    return children
  }
  return <Navigate to='/login' />
}
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
https://www.robinwieruch.de/react-router-nested-routes
https://www.positronx.io/react-js-nested-routes-us...
import {BrowserRouter as Router, Routes, Route, Navigate} from 'react-router-dom';

function App() {
  const {getUser, user, setUser} = useUser();

  return (
    <Router>
      <Routes>
        <Route path="/" element={<LoginForm user={user} getUser={getUser}/>}/>
        <Route path="login" element={<LoginForm user={user} getUser={getUser}/>}/>
        <Route path="dashboard/*" element={<PrivateRoute user={user}><DashboardRoutes user={user}/></PrivateRoute>}/>
      </Routes>
    </Router>
  );
}

export default App;

const DashboardRoutes = ({user}) => (
  <Routes>
    <Route path="/" element={<Dashboard user={user}/>}/>
    <Route path="acts" element={<ActsPage user={user}/>}/>
  </Routes>
);

const PrivateRoute = ({user, children}) => {
  if(localStorage.getItem('token')) {
    return children;
  }
  return <Navigate to="/login"/>;
}

В DashboardRoutes() можно добавлять вложенные роуты.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект