Navigator.jumpTo不使用路由堆栈

时间:2016-01-20 07:21:00

标签: react-native

为什么Navigator.jumpTo要求在Navigator.push不需要时使用路由堆栈?

我希望能够从我的应用程序中的任何路径/场景跳转回来。

Navigator.push和Navigator.pop工作正常除了我需要让我的主场景保持挂载。

如果我使用Navigator.jumpTo和Navigator.jumpBack,主场景仍然挂载,但我必须使用路由堆栈,这有时会迫使我回到多个场景以回到我的主场景。

我能想到的唯一解决方案是在跳转到新路线之前动态操纵路线堆栈,但这似乎是不优雅和不必要的。

或许我错过了什么?

1 个答案:

答案 0 :(得分:1)

这是因为jumpTo函数存在一些问题,您可以更改它。

  

打开you-project\node_modules\react-native\Libraries\CustomComponents\Navigator\Navigator.js

更改此代码(第1031行):

jumpTo: function(routeName) {
    var destIndex = -1;
    for (var i = 0; i < this.state.routeStack.length; i++) {
        if (this.state.routeStack[i]["name"] === routeName) {
            destIndex = i;
        }
    }
    invariant(
        destIndex !== -1,
        'Cannot jump to route that is not in the route stack'
    );
    this._jumpN(destIndex - this.state.presentedIndex);
},

现在,您可以jumpTo使用navigator.jumpTo("Home")