在 React Navigation 5 中传递参数

Ali*_*Ali 3 react-native react-navigation react-navigation-stack react-navigation-bottom-tab react-navigation-v5

我正在尝试在选项卡导航器之间传递一些参数。下面是我的程序的结构。粗体字为路线

应用程序(选项卡导航器):{主(堆栈)和过滤器(屏幕)}

主要(堆栈导航器):{ Home(屏幕)和MediaDetails(屏幕)}

我在屏幕上有一个与Filter关联的按钮,它具有onPress()函数。我传递了一些参数(但为了解决这个问题,我们只考虑参数) 。

this.props.navigation.navigate('Home', {
    to: this.state.to,
}
Run Code Online (Sandbox Code Playgroud)

现在在与Home关联的屏幕中,我正在读取状态内的参数,如下所示:

state = {
    to: this.props.route.params.to
}
Run Code Online (Sandbox Code Playgroud)

在App.js内部,我将to的初始值设置为“2020”,如下所示:

<Stack.Screen 
    name="Home" 
    component={HomeScreen}                 
    initialParams={{
       to: '2020'
    }}
/>
Run Code Online (Sandbox Code Playgroud)

初始值确实设置为2020。我按下按钮。假设我设置为1900 。就在this.props.navigation.navigate执行之前,我console.log(this.state.to)该值,它确实更新为1900。但是,当屏幕更改为Home时,该值将恢复为2020(通过 console.log 观察到)

有人能指出这种怪异行为的原因吗?我已经尝试调试这个好几个小时了,但没有成功。React Navigation 5 也很新,所以在网上找不到类似的东西。任何帮助将不胜感激。感谢您一路以来的阅读。

编辑:问题已解决,完整代码已删除!

Bil*_*mad 5

/* 1. 使用参数导航到详细信息路由 */

onPress={() => {
      navigation.navigate('Details', {
        itemId: 86,
        otherParam: 'anything you want here',
      });
    }}
Run Code Online (Sandbox Code Playgroud)

/* 2.获取参数 */

const DetailsScreen = ({ route, navigation }) => {
   const { itemId } = route.params;
   const { otherParam } = route.params;
   return (
    <View></View>
    );
};
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息: https: //reactnavigation.org/docs/params/