如何解决react-router-dom:历史记录不会自动重新加载渲染页面
我正在使用redux,redux-saga和其他依赖项,我试图使用history.push()登录后重定向页面,但是它不起作用。因此,要解决此问题,我在此之后立即使用window.location.reload()。
这是我的代码的一部分:
export function* signIn({ payload }) {
try {
const { email,password } = payload;
const response = yield call(api.post,'sessions',{
email,password
});
const { token,user } = response.data;
yield put(signInSuccess(token,user));
history.push('/home');
window.location.reload();
} catch(err) {
yield put(signFailure());
}
}
还有我的App.js:
export default function App() {
return (
<Provider store={store}>
<PersistGate persistor={persistor}>
<Router history={history}>
<Routes />
<ToastContainer autoClose={4000}/>
</Router>
</PersistGate>
</Provider>
);
}
为什么会这样?我读到这是因为在路由器/历史记录的最新版本中,历史记录无法像以前那样工作,它不会自动重定向,我不知道,我认为这就是我的理解。
有人知道如何解决吗?不必每次都使用window.location.reload()吗?
对不起我的英语,我来自巴西。
解决方法
您没有在history
传奇中使用React Router signIn
,因此它不会使用路由器进行重定向。由于传奇无法做到这一点,因此您必须将其移动到调用signIn
的组件中。
我通常会在signIn
上添加回调,以便在调用signIn
的组件内部可以在成功调用后使用history
进行重定向。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。