在我的React应用程序中,我使用carSectionTitles
进行路由。我有一个自定义的react-router-dom
对象,该对象传递给我的history
(不是Router
)对象,因此可以在历史记录对象上配置侦听处理程序。
BrowserRouter
这在过去几个月中一直很好,但是,在最近更新我的import { createBrowserHistory } from 'history';
import auth from './auth';
const history = createBrowserHistory();
history.listen((location) => {
if(location.pathname !== '/login'){
if(!auth.getToken()){
history.push('/login');
}
}
});
export default history
之后,突然node_modules
函数内部的推送并没有导致DOM的更新(而是更改了URL)。
我不知道是什么原因造成的,并且我将listen
作为浏览整个应用程序其余部分的唯一方法,该功能仍在工作,所以我不知道为什么它不起作用。无法使用此文件。
即使将历史对象导入不属于我的React组件树的其他.js文件中,也可以调用history.push
并对其进行更新。
感谢您的帮助!
编辑:我的history.push
软件包的版本是react-router-dom
,而React ^4.4.0-alpha.0
答案 0 :(得分:1)
感谢Tholle的回答:
我的问题得以解决,方法是将每个history.push()
替换为setTimeout(() => history.push(), 0);