gpt4 book ai didi

javascript - React 路由器history.push() 无法从history.listen() 工作

转载 作者:行者123 更新时间:2023-12-03 00:47:15 24 4
gpt4 key购买 nike

在我的 React 应用程序中,我使用 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 后,突然 listen 函数内的推送不会导致更新到 DOM(但更改 URL)。

我不知道是什么导致了这个问题,我使用 history.push 作为导航应用程序其余部分的唯一方法,该方法仍然有效,所以我不这样做从这个文件知道为什么它不起作用。

即使在不属于我的 React 组件树的其他 .js 文件中导入历史对象,也可以调用 history.push 并更新它。

感谢任何帮助!

编辑:我的react-router-dom包版本是^4.4.0-alpha.0,React16.4.0

最佳答案

感谢托勒的回答:

通过将每个 history.push() 替换为 setTimeout(() => History.push(), 0); 解决了我的问题

关于javascript - React 路由器history.push() 无法从history.listen() 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53196299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com