在子组件中反应this.props.navigation.openDrawer()?

时间:2018-06-27 15:04:26

标签: react-native react-native-navigation-v2

我有一个通过React Navigation 2的openDrawer方法,在我的View中效果很好。但是,当我创建一个子组件并将openDrawer按钮放入其中时,将无法再访问this.props.navigation。如何将其传递给子组件?我查看了状态,但这似乎不是解决此问题的正确方法?我是React / Native的新手。这是我在主视图内的按钮,这样可以正常工作。

<View style={styles.menuBar}> 
<TouchableOpacity style={styles.menuButton} 
 onPress={() => this.props.navigation.openDrawer()}>
<Text>&#9776;</Text>
</TouchableOpacity>
// Other Stuff inside menuBar.
</View>

此菜单按钮还具有其他一些项目,我希望将其作为一个子类分组在一起,我可以将其导入各个屏幕。

import { topMenuBar } from '../components/menuBar';
<topMenuBar />

但是,菜单按钮现在不再起作用。我知道这是因为this.props现在引用的是topMenuBar类,而不是作为nav结构一部分的原始类。但是我不知道此步骤的正确步骤,无论是使用状态还是以某种方式从子方法的react-navigation调用NavigationActions。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

使用react-navigation打开的每个组件都具有“ this.props.navigation”。

如果您需要在子组件中使用它,则应将其作为道具传递给他们:

export default class Home extends Component{
    render(){
        <View>
            <OtherComponent navigation = {this.props.navigation}/>
        </View>
    }
}

注意:如果您需要更好的帮助,则应始终提供创建小提琴的代码并更好地组织您的答案。