react-native - 如何跳过/修改导航
问题描述
我有一个很好用的 stackNavigation。3 个屏幕:DeviceList / DeviceDetail / DevideAdd。正常路径是 (1) DeviceList > DeviceDetail 或 (2) DeviceList > DeviceAdd > DeviceDetail。
但是当用户使用路径 (2) 时,我希望 DeviceDetail 屏幕的后退按钮转到 DeviceList。或者目前,它会使用 DevideAdd。
这是我的导航:
const DeviceStackNavigator = createStackNavigator({
DeviceList: {
screen: DeviceList,
},
DeviceDetail: {
screen: DeviceDetail,
},
DeviceAdd: {
screen: DeviceAdd,
},
});
如何实现呢?
解决方案
关键属性 ' goBack()
' 是一个动态生成的字符串,每次导航到新的 ' react-navigation
' 路径时都会创建该字符串。
所以如果你想从DeviceDetail
to DeviceList
,你要做的就是把DeviceAdd
down 的 key 传递给DeviceDetail
,然后goBack()
用 key 调用。
DeviceAdd.js
render() {
const { state, navigate } = this.props.navigation;
return (
<View>
<Button title="Go to DeviceDetail" onPress={ () => {
navigate('DeviceDetail', { go_back_key: state.key });
}} />
</View>
);
}
DeviceDetail.js
render() {
const { state, goBack } = this.props.navigation;
const params = state.params || {};
return (
<View>
<Button title="Back to DeviceList" onPress={ () => {
goBack(params.go_back_key);
}} />
</View>
);
}
推荐阅读
- python - 如何将链表的最后一个元素移动到python中的第一个元素(下面的代码)?
- javascript - Divs被切断了?
- c++ - 混合 Rcpp 模块和 Rcpp::export
- java - TabLayout 迁移到 AndroidX
- python - 如何在python中的zip文件夹中创建文件?
- c++ - 如何在 Cython 中链接嵌套的 C++ 库
- javascript - 使用 laravel 中的 db 数据更改 tui-calender 中的数据
- reactjs - ReactJS D3 - 如何放大 D3 地理世界地图
- python - 如何在python中水平堆叠两个矩阵
- java - 使用 Maps Elevation API