Javascript 将redux状态映射到不工作的道具
第一次尝试在react本机应用程序上进行redux时,我遇到了这个问题 连接组件并传递MapStateTops调用后,在函数内部我可以很好地记录状态。但是,当我在组件中使用这个道具时,它是未定义的。我在其他组件中使用redux状态很好 太棒了Javascript 将redux状态映射到不工作的道具,javascript,reactjs,react-native,redux,Javascript,Reactjs,React Native,Redux,第一次尝试在react本机应用程序上进行redux时,我遇到了这个问题 连接组件并传递MapStateTops调用后,在函数内部我可以很好地记录状态。但是,当我在组件中使用这个道具时,它是未定义的。我在其他组件中使用redux状态很好 太棒了 从“React”导入React; 导入{容器、内容、按钮, 文本、卡片、卡片、正文、图标、标题、左、右、标题}来自“本机基础”; 从'react redux'导入{connect}; 类主屏幕扩展了React.Component{ 静态导航选项={ 标题:
从“React”导入React;
导入{容器、内容、按钮,
文本、卡片、卡片、正文、图标、标题、左、右、标题}来自“本机基础”;
从'react redux'导入{connect};
类主屏幕扩展了React.Component{
静态导航选项={
标题:空
};
痛风{
console.log(this.props.isloged);
//此处未定义
}
render(){
返回(
菜单
);
}
}
常量mapStateToProps=状态=>{
console.log(state.islog);
//我这里有数据
返回{
isLogged:state.isLogged
}
}
导出默认连接(mapStateToProps,{})(主屏幕);
问题是,当您调用this.tryLogout
时,this
关键字会动态绑定到事件,而不是组件本身,因此事件没有您要查找的道具
您可以采取不同的方法来解决此问题:
使用命名箭头函数
tryLogout = () => console.log(this.props)
...
onPress={this.tryLogout}
使用bind
方法
onPress={this.tryLogout.bind(this)}
使用内嵌箭头函数
tryLogout = () => console.log(this.props)
...
onPress={this.tryLogout}
onPress={()=>this.tryLogout()}
您可以查看文档中的不同技术:您收到此错误是因为您的tryLogout()
未绑定到组件。因此,此
引用不属于您的组件。将声明更改为:
tryLogout = () => {
console.log(this.props.isLogged);
}
()=>{}
,称为箭头函数
,为您执行绑定
提示:
如果为需要访问任何prop
或state
的组件构建方法,则需要将函数绑定到组件类。当您像上面那样声明该方法时,您就是在绑定它。因此,您的方法将有可能访问组件的任何属性
或状态
。您的代码应该工作正常。只是随便试试运气,介意分享一下combineReducers
方法吗?