【问题标题】:React native navigation parameter not working with Switch navigator反应本机导航参数不适用于 Switch navigator
【发布时间】:2019-11-07 15:41:15
【问题描述】:

我在我的代码中使用 react native navigation 和 redux。 下面是我的导航结构

const MainTabNavigator = createBottomTabNavigator({
    Home,
    Tenants,
    WorkOrders: {
      screen: WorkOrders,
      navigationOptions: {
        title: 'Work Orders',
        headerTitle: 'Work Orders'
      }
    }
}, {
  navigationOptions: ({ navigation }) => {
      const { routeName } = navigation.state.routes[navigation.state.index];
      return {
        headerTitle: routeName
      };
  }
});

const MainStackNavigator = createStackNavigator({
    MainTabNavigator
}, {
  defaultNavigationOptions: ({ navigation }) => {
      return {
        headerLeft: (
          <Icon
            style={{ paddingLeft: 10 }}
            onPress={() => navigation.openDrawer()}
            name="md-menu"
            size={30}
          />
        )
      };
    }
});

const AppDrawerNavigator = createDrawerNavigator({
  Menu: {
    screen: MainStackNavigator
  }
});

const AppSwitchNavigator = createSwitchNavigator({
  Login: { screen: Login },
  Main: { screen: AppDrawerNavigator }
});

然后,我有一个操作文件,我可以在其中从登录导航到主页。

async
...
console.debug(response.data);  // Here the console shows value 10
NavigationService.navigate('Main', { userID: response.data });

在 HomeScreen 页面我尝试查看参数值:

const { navigation } = this.props;
const userID = navigation.getParam('userID', '0');
console.debug(userID); // HERE THE VALUE IS 0, BUT SHOULD BE 10

我做错了什么?谢谢

【问题讨论】:

    标签: react-native react-native-navigation


    【解决方案1】:

    您不能使用 SwitchNavigator 传递参数,这显然是文档中的意图:

    默认情况下,它不处理返回操作,它会将路由重置为 切换时它们的默认状态。

    如果你真的需要在屏幕之间共享对象,你应该使用redux而不是react-navigation

    【讨论】:

      猜你喜欢
      • 2018-05-16
      • 2018-10-03
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-09
      • 1970-01-01
      相关资源
      最近更新 更多