react-native - 在 React Navigation 5 中传递参数
问题描述
我正在尝试在选项卡导航器之间传递一些参数。下面是我的程序的结构。粗体字是路线
应用程序(选项卡导航器):{主(堆栈)和过滤器(屏幕)}
Main (Stack Navigator): { Home (screen) & MediaDetails (screen) }
我在屏幕上有一个与具有onPress()功能的过滤器关联的按钮。我正在传递一些参数(但为了这个问题,我们只考虑参数)。
this.props.navigation.navigate('Home', {
to: this.state.to,
}
现在在与Home关联的屏幕中,我正在读取状态内的参数,如下所示:
state = {
to: this.props.route.params.to
}
在App.js中,我将to的初始值设置为 '2020',如下所示:
<Stack.Screen
name="Home"
component={HomeScreen}
initialParams={{
to: '2020'
}}
/>
初始值确实设置为2020。我按下按钮。假设我设置为1900。就在this.props.navigation.navigate执行之前,我console.log(this.state.to)的值,它确实更新为1900。但是,随着屏幕变为Home,该值恢复为2020(通过 console.log 观察)
有人能指出这种怪异行为的原因吗?我一直在尝试调试这个几个小时,但没有运气。React Navigation 5 也很新,所以在网上找不到类似的东西。任何帮助将不胜感激。感谢您一路阅读。
编辑:问题已解决,完整代码已删除!
解决方案
/* 1. 使用参数导航到 Details 路由 */
onPress={() => {
navigation.navigate('Details', {
itemId: 86,
otherParam: 'anything you want here',
});
}}
/* 2. 获取参数 */
const DetailsScreen = ({ route, navigation }) => {
const { itemId } = route.params;
const { otherParam } = route.params;
return (
<View></View>
);
};
推荐阅读
- swift - 快速接受任何类型测量的函数
- r - 使用 position_jitterdodge 对多面图中的点进行子集化
- sql - SQL:如何使用 group by 从一个表中选择不在另一个表中的行?
- serenity-platform - 在字段更改时在运行时验证字段
- python - 为单链表实现查找节点功能
- r - 在 R 中并行化一个重要的 Gibbs 采样器:RcppThread 与 RcppParallel
- asp.net-mvc - Razor 页面路由在 MVC 应用程序中不起作用
- r - 如何满足R中幼苗存活数据的Cox比例风险模型假设
- c# - 使用 TopShelf 的 Windows 服务:底层提供程序在打开时失败。用户登录失败
- html - CSS z-index 和 box-shadow 裁剪问题