我尝试在主要的本机App中使用“ this.props.navigation”,但未定义。在TabNavigator和ScreenNavigator随附的其他组件中,它可以正常工作。
我的App.js
allocate: 0x1e4c990 (1)
MyException constructed.
allocate: 0x1e4ddb0 (1)
MyException constructed.
MyException destroyed.
free: 0x1e4e1b0
MyException destroyed.
free: 0x1e4cd90
-----------
allocate: 0x1e4c990 (1)
MyException constructed.
allocate: 0x1e4ddb0 (1)
MyException constructed.
MyException destroyed.
free: 0x1e4e1b0
MyException destroyed.
free: 0x1e4cd90
-----------
allocate: 0x1e4c990 (1)
MyException constructed.
allocate: 0x1e4ddb0 (1)
MyException constructed.
MyException destroyed.
free: 0x1e4e1b0
MyException destroyed.
free: 0x1e4cd90
-----------
答案 0 :(得分:1)
navigation
属性仅适用于导航堆栈中的组件或使用withNavigation
HOC的子组件。
答案 1 :(得分:1)
您的App
类未包含在Navigator
堆栈中,因此,导航器类无法为其提供任何导航道具,这就是为什么您遇到undefined
错误的原因因为navigation
对象不存在。
此外,如果您需要打开<Tutorial/>
作为第一个屏幕,请将其作为StackNavigator
中的第一个元素。这样,将始终被首先调用。
PS:您可以另外向不同的组件提供navigation={this.props.navigation}
元素,这些元素不必包含在导航器类中。例如,您需要打开一个dropdown
元素,该元素提供了一个退出选项,可以导航到主屏幕。在此用例中,最好像问题中提供的那样提供navigation
道具。但是需要注意,提供道具的类应该存在对象
编辑
根据您的要求,您需要为打开的每个屏幕显示一个教程。您可以通过两种方法来做到这一点。
<Tutorial/>
组件将包含多个条件来检查路线并显示适当的数据(这就是我现在能想到的)。<Tutorial/>
组件。这是我目前能想到的。如果我有更多的想法会更新:)
希望这个答案。