react-native - this.props.navigation.navigate() 未定义
问题描述
我正在使用这样的 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 的个人资料中。
并在聊天屏幕中
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?
解决方案
如果您使用class
基于反应的组件,则必须将组件中的其他功能绑定到实例。您可以通过显式绑定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');
}
...
}
推荐阅读
- google-chrome - 由于 CSP 标头,Chrome 会间歇性拒绝 FB SDK
- java - 如何将 String 对象从 activity_1 直接传输到 activity_3
- asp.net - 如何在 ASP.NET 中创建用户配置文件页面
- asp.net - 如何解决 Line 消息 api
总是返回错误的请求 - kubernetes-helm - 将 Helm 图表依赖库作为 URL
- php - laravel 包含进行迁移的路径
- mysql - 如何在mysql的表中获取某个用户的最后一个和第二个最后插入的数据?
- r - 如何使用另一列计算 r 中的时间序列列?
- c# - c#从父方法调用子方法
- python-3.x - 使用 setuptools 从 VCS 存储库子目录安装依赖项