React Native中Redux全局状态更新错位:触发房源action错误修改currentUser
问题排查与解决方案
- 首先排查常量定义重复问题:这是最符合你现象的根因,请打开你存放常量的
../constants文件,检查USER_LISTINGS_STATE_CHANGE和USER_STATE_CHANGE的赋值是否完全重复。比如如果两个常量都被错误赋值为同一个字符串(例如都写了"USER_STATE_CHANGE"),那么你dispatchUSER_LISTINGS_STATE_CHANGE的时候,会命中reducer中USER_STATE_CHANGE的分支,把列表数组直接赋值给currentUser字段,和你遇到的现象完全一致。 - 修复reducer参数写法错误:你当前reducer的参数写为
(state = state || initialState, action),不符合Redux reducer的标准写法,应该修改为(state = initialState, action)。ES6的默认参数只会在参数为undefined的时候生效,你当前的写法在Redux初始化阶段可能会出现不符合预期的state初始值。 - 临时加日志定位问题:如果排查常量后问题还存在,可以在reducer的switch逻辑前加一行打印代码
console.log('action type:', action.type, 'payload:', action.payload),控制台观察dispatch fetchUserListings时实际触发的type是什么,就能快速定位分支匹配错误的问题。
内容的提问来源于stack exchange,提问作者A. G
相关产品推荐
相关产品推荐

