如何从路由器中删除以前的路由?
How can I remove the previous route from Router?
我正在使用 t4t5/react-native-router,但我在尝试找出如何删除最后一条路线以使用户无法返回(登录后)时遇到了问题。
有没有办法重置堆栈以便下一条路由成为根?
请注意,我也尝试过 React NavigatorIOS,但它不会更改新路线的标题(文本与初始路线相同)。
使用 resetTo
时更改标题存在问题:https://github.com/facebook/react-native/issues/476。
这是另一种可能的解决方案:使用 Navigator(不是 NavigatorIOS)。基本上,在 index.ios.js
中我们应该做:
renderScene: function(route, nav) {
switch (route.id) {
case 'home':
return <Home navigator={nav}/>;
case 'login':
return <Login navigator={nav}/>;
case 'register':
return <Register navigator={nav}/>
default:
return (
<Login navigator={nav}/>
);
}
},
render: function() {
return (
<Navigator
style={{backgroundColor: '#fff'}}
initialRoute={{ id: "login" }}
renderScene={this.renderScene}
configureScene={(route) => {
if (route.sceneConfig) {
return route.sceneConfig;
}
return Navigator.SceneConfigs.FloatFromRight
}
}
/>
)
}
如果登录成功,在登录中执行此操作:
this.props.navigator.replace({ id: 'home' });
替换当前路由,这样用户就不会返回登录。
可以找到示例 here。
我正在使用 t4t5/react-native-router,但我在尝试找出如何删除最后一条路线以使用户无法返回(登录后)时遇到了问题。
有没有办法重置堆栈以便下一条路由成为根?
请注意,我也尝试过 React NavigatorIOS,但它不会更改新路线的标题(文本与初始路线相同)。
使用 resetTo
时更改标题存在问题:https://github.com/facebook/react-native/issues/476。
这是另一种可能的解决方案:使用 Navigator(不是 NavigatorIOS)。基本上,在 index.ios.js
中我们应该做:
renderScene: function(route, nav) {
switch (route.id) {
case 'home':
return <Home navigator={nav}/>;
case 'login':
return <Login navigator={nav}/>;
case 'register':
return <Register navigator={nav}/>
default:
return (
<Login navigator={nav}/>
);
}
},
render: function() {
return (
<Navigator
style={{backgroundColor: '#fff'}}
initialRoute={{ id: "login" }}
renderScene={this.renderScene}
configureScene={(route) => {
if (route.sceneConfig) {
return route.sceneConfig;
}
return Navigator.SceneConfigs.FloatFromRight
}
}
/>
)
}
如果登录成功,在登录中执行此操作:
this.props.navigator.replace({ id: 'home' });
替换当前路由,这样用户就不会返回登录。
可以找到示例 here。