嵌套的TabNavigator没有将params传递给路由

时间:2017-07-26 23:37:28

标签: react-native react-navigation

我有一个嵌套在Stack Navigator中的TabNavigator。在登录页面中,我想导航到TabNavigator,重置堆栈并将一些参数传递给TabNavigator。

如文档中所述,我正在执行以下操作来重置堆栈,将user param传递给导航器。



  resetAction = () => {
    return NavigationActions.reset({
      index:0,
      actions: [NavigationActions.navigate({routeName:'TabNav', params:{user: userId}})]
    })
  }




我的问题是我无法访问TabNavigator路线中的参数。我尝试使用this.props.navigation.state.paramsthis.props.navigation.params,但似乎都没有。

我的tabNavigator代码:



const TabNav = TabNavigator({
    Page1:{screen: Page1},
    Page2: {screen: Page2},
    Page3: {screen: Page3}
})




1 个答案:

答案 0 :(得分:1)

我能够通过将TabNav组件更改为基于类的组件来解决它,如下所示:

export default class Dashboard extends React.Component {
  
  router = const TabNav = TabNavigator({
    Page1:{screen: Page1},
    Page2: {screen: Page2},
    Page3: {screen: Page3}
  })

  render(){
    return <TabNav screenProps={{userId: this.props.navigation.state.params.userId}}/>
  }
}

这样做我能够正常传递诸如NavigationActions.navigate({routeName:'TabNav', params:{userId}}之类的参数并访问screenProps属性中路径中的userId参数,如this.props.screenProps.userId