反应导航
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
有什么建议吗?
编辑:
我当前的导航设置是:
- 堆栈导航器
- 其他场景
- 抽屉导航器
- 另一个场景
- TabBarNavigator
- 场景A
- 场景B
在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
你可以试试这个,我创建它是为了简化这个参数问题。
我目前有两个通过 TabBarNavigator
:
ScreenA:按下一个按钮,我触发这个功能this.props.navigation.navigate('ScreenB', {data: 'test'}
,于是{data: 'test'}
就是params
。
ScreenB:到此页面的导航按预期工作。但是,我无法访问 params 对象 - 即使我可以在我的控制台的导航调度日志中看到它。
我查看了 react-navigation API,尤其是他们的 link about navigation props,但无济于事。关于如何以编程方式访问 ScreenB 上的 params
有什么建议吗?
编辑:
我当前的导航设置是:
- 堆栈导航器
- 其他场景
- 抽屉导航器
- 另一个场景
- TabBarNavigator
- 场景A
- 场景B
- 堆栈导航器
在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
你可以试试这个,我创建它是为了简化这个参数问题。