反应导航

React navigation

我目前有两个通过 TabBarNavigator:

链接的屏幕

ScreenA:按下一个按钮,我触发这个功能this.props.navigation.navigate('ScreenB', {data: 'test'},于是{data: 'test'}就是params

ScreenB:到此页面的导航按预期工作。但是,我无法访问 params 对象 - 即使我可以在我的控制台的导航调度日志中看到它。

我查看了 react-navigation API,尤其是他们的 link about navigation props,但无济于事。关于如何以编程方式访问 ScreenB 上的 params 有什么建议吗?

编辑:

  1. 我当前的导航设置是:

    • 堆栈导航器
      • 其他场景
      • 抽屉导航器
        • 另一个场景
        • TabBarNavigator
          • 场景A
          • 场景B
  2. 在SceneB时,console.log(this.props.navigation.state)的输出为{key: "SceneB", routeName: "SceneB"}

ScreenB 组件中,您应该能够访问使用 this.props.navigation.state.params 传递的 params。有点长吧?

所以在你的情况下你可以这样做:

console.log(this.props.navigation.state.params.data 你会看到 test!

我一直坚持这个。如果通过 assign() 复制 params 对象,则可以访问它们。这是一个糟糕的解决方案,因为无论如何您都必须在该控件中设置状态。 React 的主要价值在于不必这样做。

我很高兴有人为此惩罚我并且 post 一个更好的解决方案。

var copy = Object.assign({}, this.props.navigation.state);
console.log(copy.data);

https://github.com/aajiwani/react-navigation-aware-helper

你可以试试这个,我创建它是为了简化这个参数问题。