我正在这样使用createStackNavigator。
const ChatStack = createStackNavigator({
Profiles: Profiles,
ChatScreen: ChatScreen
})
const RootChatStack = createStackNavigator({
Home: ChatStack,
ModalScreen: ProfileModalScreen
},{
mode: 'modal',
headerMode: 'none',
})
在个人资料中,我使用props.navigation.navigate('ChatScreen',{name: item.content })
转到ChatScreen。
在ChatScreen中
class Example extends React.Component {
static navigationOptions = ({navigation}) => {
return {
title: navigation.getParam('name', ''),
};
...
renderModal() {
this.props.navigation.navigate('ModalScreen')
}
...
}
我可以使用navigationOptions设置标题,但是当我使用this.renderModal()时, 它给我错误
undefined is not an object (evaluating '_this2.props.navigation')
如何在示例组件中使用navigation.navigate?
答案 0 :(得分:1)
如果您使用的是基于class
的react组件,则必须将组件中的其他功能绑定到实例。您可以通过将this
显式绑定到组件中的每个附加函数来实现(已经绑定了render()
之类的反应函数)。
这是以下代码段中的关键行:
this.renderModal = this.renderModal.bind(this);
class Example extends React.Component {
constructor(props) {
super(props);
this.renderModal = this.renderModal.bind(this);
}
renderModal() {
this.props.navigation.navigate('ModalScreen');
}
...
}