React Redux状态已更新但无法获取指定键值,需输出user_added
解决React Redux中无法提取
user_added值的问题 从你控制台的输出能明确看出来,你的state.user是一个长度为1的数组,数组的第0项才是包含result: "user_added"的对象。你之前的访问逻辑没深入到对象的result键,所以拿不到目标值。
方法一:在组件中直接正确访问
你可以通过数组索引+对象键的方式提取值,同时建议用可选链操作符(?.)处理初始状态下数组为空的情况,避免报错:
render() { // 提取目标值,兼容数组为空的场景 const userAddedResult = this.props.userData[0]?.result; console.log('result', userAddedResult); // 这里会输出"user_added" return ( <div> {userAddedResult && <p>{userAddedResult}</p>} </div> ); }
方法二:在mapStateToProps中提前处理值
如果希望组件直接拿到user_added而不是整个数组,可以在映射状态时就完成提取:
const mapStateToProps = (state) => { console.log("user result ==========>>>>", state.user[0]?.result); return { // 直接返回result值,初始状态下默认设为空字符串 userAddedResult: state.user[0]?.result || "" } }
之后在组件里直接调用this.props.userAddedResult就能获取user_added了。
额外小提示
如果你的user状态是通过异步请求更新的,一定要注意初始状态下state.user可能是空数组,所以空值判断必不可少,避免出现Cannot read property 'result' of undefined的错误。另外你之前尝试的map方法也能生效,只要正确解构对象:
this.props.userData.map(item => <p>{item.result}</p>)
内容的提问来源于stack exchange,提问作者Varis Bhalala
相关产品推荐
相关产品推荐

