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

Nested TabNavigator not passing params to routes

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

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

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

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

我的 tabNavigator 代码:

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

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

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