reactjs - React js重定向不会重定向到新的url
问题描述
我是 React js 的新手,并开始在我的一个实践项目中实施。
当用户登录时我想要什么它应该被重定向到另一个将呈现另一个组件的路由。
对于重定向,我使用的是Redirect
组件,react-router-dom
但它似乎对我不起作用。如果我使用props.history.push()
它,它会起作用。
我要清楚
- 在什么情况下
Redirect
有效? - 我应该什么时候使用
Redirect
,什么时候使用props.history.push()
?
这是我的代码沙盒演示。
https://codesandbox.io/embed/react-protected-routes-n587m?fontsize=14&hidenavigation=1&theme=dark
解决方案
Redirect
需要渲染组件才能生效,并且事件处理程序的返回值未渲染或通常未使用
如果您希望在事件处理程序中重定向或更改路由,您需要使用history.push
export const LandingPage = props => {
return (
<div>
<h1>Landing Page</h1>
<button
onClick={() => {
auth.login(() => {
props.history.push("/app")
});
}}
>
Login
</button>
</div>
);
};
更新状态时可以使用重定向,并且根据状态的存在,您可以呈现 Redirect 组件,如
return loggedIn && <Redirect to="/app" />
推荐阅读
- json - 处理 JSON RecordID 的正确方法是什么?
- java - 序列化外部库
- java - Google PubSub Library 不会发布有关主题的消息,但不会引发任何错误
- javascript - 蹦床的奇怪行为
- android - 添加库后显示此错误在路径上找不到类“.MainActivity”:DexPathList
- c# - 有没有办法编写一个 for 循环,这样它就不会在序列中递增?
- php - woocommerce:付款完成后如何将从远程服务器获取的数据添加到项目中?
- java - 具有超级方法调用的继承方法的切入点
- python - 在用于数据块的 spark-submit 的主 python 文件中导入其他 python 文件
- java - 如何使用两个包实现观察者模式