0

我目前有两个通过 a 链接的屏幕TabBarNavigator

ScreenA:按下按钮后,我触发此功能,this.props.navigation.navigate('ScreenB', {data: 'test'}因此.{data: 'test'}params

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

我查看了 react-navigation API,尤其是在他们关于导航道具的链接上,但无济于事。关于如何以编程方式访问paramsScreenB 上的任何建议?

编辑:

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

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

4

3 回答 3

2

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

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

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

于 2017-04-07T04:20:59.807 回答
0

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

我很高兴有人为此责备我并发布更好的解决方案。

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

于 2017-04-27T16:29:28.670 回答
0

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

你可以试试这个,我创建来简化这个参数问题。

于 2017-07-26T14:01:08.057 回答