reactjs - 在 React.Js 中使用路由
问题描述
我是新手,我正在尝试在 React.JS 中配置布局和路线
我有一个布局名称 admin.js
import React from "react";
import { useLocation, Route, Switch, Redirect } from "react-router-dom";
// reactstrap components
import { Container } from "reactstrap";
// core components
import AdminNavbar from "components/Navbars/AdminNavbar.js";
import AdminFooter from "components/Footers/AdminFooter.js";
import Sidebar from "components/Sidebar/Sidebar.js";
import routes from "routes.js";
const Admin = (props) => {
const mainContent = React.useRef(null);
const location = useLocation();
React.useEffect(() => {
document.documentElement.scrollTop = 0;
document.scrollingElement.scrollTop = 0;
mainContent.current.scrollTop = 0;
}, [location]);
const getRoutes = (routes) => {
return routes.map((prop, key) => {
if (prop.layout === "/admin") {
return (
<Route
path={prop.layout + prop.path}
component={prop.component}
key={key}
/>
);
} else {
return null;
}
});
};
const getBrandText = (path) => {
for (let i = 0; i < routes.length; i++) {
if (
props.location.pathname.indexOf(routes[i].layout + routes[i].path) !==
-1
) {
return routes[i].name;
}
}
return "Brand";
};
return (
<>
<Sidebar
{...props}
routes={routes}
logo={{
innerLink: "/admin/index",
imgSrc: require("../assets/img/brand/argon-react.png").default,
imgAlt: "...",
}}
/>
<div className="main-content" ref={mainContent}>
<AdminNavbar
{...props}
brandText={getBrandText(props.location.pathname)}
/>
<Switch>
{getRoutes(routes)}
<Redirect from="*" to="/admin/index" />
</Switch>
<Container fluid>
<AdminFooter />
</Container>
</div>
</>
);
};
export default Admin;
我创建了一个子组件布局名称create.js,它像子路径一样工作,并且有一个小表单 createmodule.js
我正在尝试归档路由路径“localhost:3000/admin/create/createmodule.js” 这是我的子布局 create.js
import React from "react";
import { useLocation, Route, Switch, Redirect } from "react-router-dom";
// reactstrap components
import { Container } from "reactstrap";
// core components
import AdminNavbar from "components/Navbars/AdminNavbar.js";
import AdminFooter from "components/Footers/AdminFooter.js";
import routes from "routes.js";
const createmodule = (props) => {
const mainContent = React.useRef(null);
const location = useLocation();
React.useEffect(() => {
document.documentElement.scrollTop = 0;
document.scrollingElement.scrollTop = 0;
mainContent.current.scrollTop = 0;
}, [location]);
const getRoutes = (routes) => {
return routes.map((prop, key) => {
if (prop.layout === "/admin") {
return (
<Route
path={prop.layout + prop.path}
component={prop.component}
key={key}
/>
);
} else {
return null;
}
});
};
const getBrandText = (path) => {
for (let i = 0; i < routes.length; i++) {
if (
props.location.pathname.indexOf(routes[i].layout + routes[i].path) !==
-1
) {
return routes[i].name;
}
}
return "Brand";
};
return (
<>
<div className="main-content" ref={mainContent}>
<AdminNavbar
{...props}
brandText={getBrandText(props.location.pathname)}
/>
<Switch>
{getRoutes(routes)}
<Redirect from="*" to="/admin/index" />
</Switch>
<Container fluid>
<AdminFooter />
</Container>
</div>
</>
);
};
export default createmodule;
这是我的路线
import Index from "views/Index.js";
import Profile from "views/examples/Profile.js";
import Maps from "views/examples/Maps.js";
import Register from "views/examples/Register.js";
import Login from "views/examples/Login.js";
import Tables from "views/examples/Tables.js";
import Icons from "views/examples/Icons.js";
import Createmodulefrom "./views/examples/Create/Createmodule.js";
var routes = [
{
path: "/index",
name: "Dashboard",
icon: "ni ni-tv-2 text-primary",
component: Index,
layout: "/admin",
},
{
path: "/icons",
name: "Tickets",
icon: "ni ni-planet text-blue",
component: Icons,
layout: "/admin",
},
{
path: "/maps",
name: "Accounts",
icon: "ni ni-building text-orange",
component: Maps,
layout: "/admin",
},
{
path: "/user-profile",
name: "Contacts",
icon: "ni ni-single-02 text-yellow",
component: Profile,
layout: "/admin",
},
{
path: "/tables",
name: "Products",
icon: "ni ni-collection text-red",
component: Tables,
layout: "/admin",
},
{
path: "/login",
name: "All Activity",
icon: "ni ni-check-bold text-info",
component: Login,
layout: "/auth",
},
{
path: "/register",
name: "Settings",
icon: "ni ni-settings text-pink",
component: Register,
layout: "/auth",
},
{
path: "/createmodule",
name: "Create Module",
icon: "ni ni-planet text-blue",
component: Createmodule,
layout: "/admin/create",
}
];
export default routes;
你能告诉我需要做什么来存档路由路径 “localhost:3000/admin/create/createmodule.js”
解决方案
推荐阅读
- java - 在 RecyclerView 的 onBindViewHolder 方法中将文本设置为 EditText 时出错
- java - java将字符串传递给文件编写器会使创建的文件变得混乱
- python - 在 bash 脚本中返回 Python 脚本的退出号和值
- html - 对话框组件中的primefaces日历问题
- javascript - 如何循环并将数组推送到数组中?
- sql - 获取一周中的天数
- python - 与 CMD2 功能类似的 Prompt_Tookit
- fiware - 无法使用 ckanext-wirecloud 在 ckan 中创建新仪表板
- swift - 如何在mapkit中获取到最近引脚的方向
- python - 基于列表项的第一个元素的邻接合并列表项