【问题标题】:ReactJS Router - .push() , how to stop execution after one?ReactJS 路由器 - .push() ,如何停止执行?
【发布时间】:2025-11-26 19:55:01
【问题描述】:

RectJS 路由器在这里:https://github.com/ReactTraining/react-router

使用此页面中的“push(pathOrLoc)”方法:https://github.com/ReactTraining/react-router/blob/master/docs/API.md

在 iOS 中,如果我有以下情况:

hashHistory.push({pathname:'/path1'});
hashHistory.push({pathname:'/path2'});

我将被导航到“/path1”片刻,然后降落在“/path2”上。

我希望发生的事情是我被推送到“/path1”并且代码永远不会执行第二条路径。怎么两个都被处死了?有什么办法可以阻止第二次发生?

一个例子是我有一个来自 web url 的回调..它打开移动应用程序并将用户推送到相应的页面 ('/path1') 并且在我的代码中的回调下方我有正常的推送,如果用户正常打开应用程序('/path2').. 但回调 /path1 被 /path2 覆盖。

通过我的应用程序中的各种回调,有超过 2 种路径可能性,但用户总是以最后一次调用结束,即使我希望该代码永远不会被执行。我真的不想加入一堆新函数/变量/if 语句来避免调用这些推送。

有没有办法禁用这种行为?我希望是这样的:

hashHistory.push({pathname:'/path1'}, {dontGoAnyhereElsePlzStop});
hashHistory.push({pathname:'/path2'});

然后降落在 /path1 上而不接触 /path2。

【问题讨论】:

    标签: reactjs routes react-router


    【解决方案1】:

    推送调用不会立即进行重定向,它的行为更像是状态更新,因此它之后的代码将继续执行。

    如果你想做一个或另一个尝试:

    if (some_condition) {
        hashHistory.push({pathname:'/path1'});
    } else {
        hashHistory.push({pathname:'/path2'});
    }
    

    【讨论】:

    • 谢谢;很怕这个,想确认一下!