【问题标题】:history pushes after replace替换后历史推送
【发布时间】:2019-04-10 18:08:45
【问题描述】:

我在我的应用程序中使用 React Router。我有一个代码片段,它解决了一个承诺并在此之后推送到一个新的 URL。但是,我在使用componentDidCatch 推送的下一个站点上发现了错误。此方法随后替换当前 URL。我正在听路由器历史,但历史的队列似乎有点偏离(注意实际导航是正确的!):

history.listen(({ pathname }) => console.log(pathname));
Promise.resolve().then(() => history.push('/next'));

// on /next
history.replace('/fallback');

我希望得到这样的输出:

/next
/fallback

但我收到的是这样的:

/fallback
/next

有没有办法实现预期的行为?

【问题讨论】:

    标签: reactjs react-router browser-history


    【解决方案1】:

    试试这个

    Promise.resolve().then(() => history.push('/next')).then(()=> history.replace('/fallback'));
    

    【讨论】:

    • 请补充说明
    • 嗯,我的代码已经这样工作了。请注意,我在这里使用了路由器,因此这两个代码片段出现在不相关的组件中。
    猜你喜欢
    • 2016-12-17
    • 2017-01-13
    • 2019-10-29
    • 2015-07-07
    • 2019-01-16
    • 2012-07-27
    • 2021-04-11
    • 2011-06-27
    相关资源
    最近更新 更多