Определение маршрутов в отдельном компоненте — React

Я новичок в реагировании и учусь в данный момент. У меня возникла проблема с реактивным маршрутизатором.

У меня есть маршруты, определенные в моем app.js, как показано ниже.

import React, { Component } from "react";
import { Route, Switch } from "react-router-dom";
import Home from "./Home";
import AdminLogin from "./Admin/Login/index";
import { PrivateRoute } from "../Shared/PrivateRoute";
import Dashboard from "./Admin/Dashboard";

export default class Routes extends Component {
  render() {
    return (
      <Switch>
        <Route path = "/" exact = {true} component = {Home} />
        <Route path = "/auth/adminlogin" exact = {true} component = {AdminLogin} />
        <PrivateRoute
          path = "/admin/dashboard"
          exact = {true}
          component = {Dashboard}
        />
      </Switch>
    );
  }
}

Я использую выше, как показано ниже

import React, { Component } from "react";
import "./App.css";
import Navbar from "./Components/Navbar";
import Routes from "./Components/Pages/Routes";
import { AuthProvider } from "./Context/AuthContext";

const styles = {
  noPadding: {
    padding: "0"
  }
};
class App extends Component {
  render() {
    return (
      <AuthProvider>
        <React.Fragment>
          <Navbar />
          <div className = "container-fluid" style = {styles.noPadding}>
            <Routes />
          </div>
        </React.Fragment>
      </AuthProvider>
    );
  }
}

export default App;

Теперь после входа в систему я перехожу на страницу своей панели инструментов и там я определил несколько маршрутов панели инструментов. Ниже мой компонент панели инструментов

import React, { Component } from "react";
import DashboardSidebar from "./DashboardSidebar";
import DashboardRoutes from "./DashboardRoutes";
class Dashboard extends Component {
  state = {};
  render() {
    return (
      <div>
        <div className = "row">
          <div className = "col-md-2">
            <DashboardSidebar />
          </div>
          <div className = "col-md-10">
            <DashboardRoutes />
          </div>
        </div>
      </div>
    );
  }
}

export default Dashboard;

Ниже приведены маршруты Dashboard.

import React, { Component } from "react";
import MyImages from "./MyImages/index";
import { Switch } from "react-router-dom";
import { PrivateRoute } from "../../../Shared/PrivateRoute";
import Orders from "./Orders";
import Reviews from "./Reviews/index";
class DashboardRoutes extends Component {
  state = {};
  render() {
    return (
      <div>
        <Switch>
          <PrivateRoute
            path = "/admin/dashboard"
            exact = {true}
            component = {MyImages}
          />
          <PrivateRoute
            path = "/admin/dashboard/orders"
            exact = {true}
            component = {Orders}
          />
          <PrivateRoute
            path = "/admin/dashboard/reviews"
            exact = {true}
            component = {Reviews}
          />
        </Switch>
      </div>
    );
  }
}

export default DashboardRoutes;

В приведенном выше компоненте MyImages загружается нормально, но не другие компоненты панели инструментов. Пожалуйста, предложите, что не так, или нам нужно определить все маршруты в одном месте, чтобы добиться этого.

ТИА

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
251
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас есть точное = {true} на пути к панели инструментов, и, следовательно, ни один вложенный путь не будет соответствовать правильно. Вам необходимо удалить точный атрибут из маршрутов, которые имеют вложенные маршруты, и переупорядочить их в компонентах коммутатора.

 <PrivateRoute
      path = "/admin/dashboard"
      component = {Dashboard}
    />

Комплексное решение

App.js

export default class Routes extends Component {
  render() {
    return (
      <Switch>
        <Route path = "/" exact = {true} component = {Home} />
        <Route path = "/auth/adminlogin" exact = {true} component = {AdminLogin} />
        <PrivateRoute
          path = "/admin/dashboard"
          component = {Dashboard}
        />
      </Switch>
    );
  }
}

Маршруты панели мониторинга

class DashboardRoutes extends Component {
  state = {};
  render() {
    return (
      <div>
        <Switch>
          <PrivateRoute
            path = "/admin/dashboard"
            exact = {true}
            component = {MyImages}
          />
          <PrivateRoute
            path = "/admin/dashboard/orders"
            exact = {true}
            component = {Orders}
          />
          <PrivateRoute
            path = "/admin/dashboard/reviews"
            exact = {true}
            component = {Reviews}
          />
        </Switch>
      </div>
    );
  }
}

export default DashboardRoutes;

В случае, если у DashboardRoutes также есть вложенные дочерние элементы, лучше настроить ваши маршруты, например

class DashboardRoutes extends Component {
  state = {};
  render() {
    return (
      <div>
        <Switch>
          <PrivateRoute
            path = "/admin/dashboard/orders"
            component = {Orders}
          />
          <PrivateRoute
            path = "/admin/dashboard/reviews"
            component = {Reviews}
          />
          <PrivateRoute
            path = "/admin/dashboard"
            component = {MyImages}
          />
        </Switch>
      </div>
    );
  }
}

export default DashboardRoutes;

Другие вопросы по теме