我目前有两个通过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
的任何建议?
编辑:
我当前的导航设置为:
在SceneB上,console.log(this.props.navigation.state)
的输出为{key: "SceneB", routeName: "SceneB"}
。
答案 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问题。