ReactJS Router - .push(),如何在一个之后停止执行?

时间:2017-02-08 00:14:49

标签: reactjs routes react-router

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'并且代码不会执行第二条路径。怎么会被处决?有没有办法阻止第二次发生?

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

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

无论如何都要禁用此行为?我希望有类似的东西:

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

登陆/ path1而不接触/ path2。

1 个答案:

答案 0 :(得分:1)

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

如果你想做一个或另一个尝试类似的事情:

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