为什么Navigator.jumpTo要求在Navigator.push不需要时使用路由堆栈?
我希望能够从我的应用程序中的任何路径/场景跳转回来。
Navigator.push和Navigator.pop工作正常除了我需要让我的主场景保持挂载。
如果我使用Navigator.jumpTo和Navigator.jumpBack,主场景仍然挂载,但我必须使用路由堆栈,这有时会迫使我回到多个场景以回到我的主场景。
我能想到的唯一解决方案是在跳转到新路线之前动态操纵路线堆栈,但这似乎是不优雅和不必要的。
或许我错过了什么?
答案 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")
。