React Native中导航传props至类组件却无法获取的问题
问题原因及解决方案
问题出在你配置Stack.Screen的方式上:当用children={() => <Main />}手动渲染组件时,React Navigation不会自动把导航相关的props(包括navigation、route对象)传递给Main组件,所以你的类组件里this.props是空对象,自然拿不到传递的参数。
有两种解决办法:
方法1:改用component属性配置页面
直接把类组件传给Stack.Screen的component属性,React Navigation会自动注入导航相关的props:
<Stack.Screen name="Main" component={Main} />
之后在Main的constructor里,就能通过this.props.route.params.test获取到传递的参数,打印this.props也能看到包含navigation、route的完整对象。
方法2:手动传递导航props(需保留children写法时)
如果因为要额外传递自定义props必须用children,需要把导航提供的props手动传递给Main组件:
<Stack.Screen name="Main"> {(navProps) => <Main {...navProps} />} </Stack.Screen>
这里的navProps包含navigation和route,展开后传给Main,同样可以通过this.props.route.params拿到参数。
注意:传递的导航参数是存在route.params里,不是直接在this.props根层级,所以拿到参数后要从route.params里取值。
内容的提问来源于stack exchange,提问作者Kirill Kriachenko
相关产品推荐
相关产品推荐

