反应导航

时间:2017-04-07 03:28:43

标签: react-native react-navigation

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

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

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

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

编辑:

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

    • StackNavigator
      • 其他场景
      • DrawerNavigator
        • 另一个场景
        • TabBarNavigator
          • SceneA
          • SceneB
  2. 在SceneB上,console.log(this.props.navigation.state)的输出为{key: "SceneB", routeName: "SceneB"}

3 个答案:

答案 0 :(得分:2)

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

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

console.log(this.props.navigation.state.params.data您将看到test

答案 1 :(得分:0)

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

我很高兴有人为此惩罚我,并发布了一个更好的解决方案。



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




答案 2 :(得分:0)

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

你可以试试这个,我创建的是为了简化这个params问题。