Я новичок в реагировании и учусь в данный момент. У меня возникла проблема с реактивным маршрутизатором.
У меня есть маршруты, определенные в моем 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 загружается нормально, но не другие компоненты панели инструментов. Пожалуйста, предложите, что не так, или нам нужно определить все маршруты в одном месте, чтобы добиться этого.
ТИА





У вас есть точное = {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;