reactjs - 在重定向时反应嵌套路由问题
问题描述
好的,所以基本上我是新来的反应,并试图在反应应用程序中使用 react-router-dom,基本上我想要的是我希望我的根路由“/”被重定向到“/admin”,然后“/admin” " 到 "/admin/login" 的 url 是从我编写的代码中重定向的,但我看到的是找不到页面组件。
我的应用组件
function App() {
return (
// BrowserRouter
<Router>
<Switch>
<Route exact={true} path="/">
<Redirect to="/admin" />
</Route>
<Route exact={true} path="/admin" component={Admin} />
<Route path="*" component={NotFound} />
</Switch>
</Router>
);
}
}
我的管理组件
export default function Admin(props: any) {
useEffect(() => {
console.log(props);
});
return (
<div>
<h1>Admin</h1>
<Route path={`${props.match.path}`}>
<Redirect to={`${props.match.path}/login`} exact={true} />
</Route>
<Route
exact={true}
path={`${props.match.path}/login`}
component={Login}
/>
</div>
);
}
我的登录组件
export default function Login(props: any) {
return (
<div>
<h1>Login</h1>
</div>
);
}
解决方案
从 APP 组件的管理路径中删除确切的。
function App() {
return (
// BrowserRouter
<Router>
<Switch>
<Route exact path="/">
<Redirect to="/admin" />
</Route>
<Route path="/admin" component={Admin} />
<Route path="*" component={NotFound} />
</Switch>
</Router>
);
}
}
在管理组件中添加精确
export default function Admin(props: any) {
useEffect(() => {
console.log(props);
});
return (
<div>
<h1>Admin</h1>
<Switch>
<Route exact path={`${props.match.path}`}>
<Redirect to={`${props.match.path}/login`} exact={true} />
</Route>
<Route
exact={true}
path={`${props.match.path}/login`}
component={Login}
/>
<Redirect to='404-page-path' />
</Switch>
</div>
);
}
另外,我建议你使用 linter,不必写exact={true},写exact 就足够了。
根据 404 页面的评论进行编辑。
推荐阅读
- vue.js - 使用 vuex 操作从端点获取数据并在 vuex 中设置存储变量?
- elasticsearch - 为什么要定义父子关系
- node.js - 当托管在 lite -server 本地主机中时,图像未显示在我的网页上..?
- gitlab-ci - GitLab CI:仅触发仅合并请求和特定分支
- reactjs - How to increase timeout for Axios call [React]
- python - sympy 中的辅助 y 轴
- python - How can I do a vlookup in a new column with Python?
- json - Delta Lake 事务日志 - 删除属性
- php - 我无法显示具有多对多关系的帖子类别
- sql - SQL/Oracle:如何从单独的行中获取在 Employee 表中有多个记录的单个员工的开始日期行和结束日期?