Javascript 将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本机应用程序上进行redux时,我遇到了这个问题

连接组件并传递MapStateTops调用后,在函数内部我可以很好地记录状态。但是,当我在组件中使用这个道具时,它是未定义的。我在其他组件中使用redux状态很好

太棒了

从“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
方法吗?