【发布时间】:2019-09-16 04:09:47
【问题描述】:
总结
我正在重写redux状态,解构子树,但之后部分状态丢失了
项目信息
对我的 react 项目的依赖:
- react-redux": "^6.0.1"
- redux": "4.0.1"
- redux-thunk": "2.3.0"
- ...
代码
初始状态:
const initialState = {
fetching: false,
data: {
events: null,
issues: null,
sla: {
daily: null,
weekly: null,
},
lastUpdate: null,
},
error: null,
};
reducer 的一部分丢失数据:
case types.FETCH_DATA.SUCCESS:
return {
...state,
data: {
...state.data,
sla: {
...state.data.sla,
...payload.data.sla,
},
...payload.data,
},
fetching: false,
error: null,
};
按动作发送的数据:
{
events: ["event 1", "event 2"],
issues: ["issue 1", "issue 2"],
sla: {
daily: ["daily 1", "daily 2"],
}
动作调度后的状态:
{
fetching: false,
data: {
events: ["event 1", "event 2"],
issues: ["issue 1", "issue 2"],
sla: {
daily: ["daily 1", "daily 2"],
},
lastUpdate: null,
},
error: null,
}
data.sla.weekly 丢失
如果我不发送关于操作的问题:
{
events: ["event 1", "event 2"],
sla: {
daily: ["daily 1", "daily 2"],
}
动作调度后的状态:
{
fetching: false,
data: {
events: ["event 1", "event 2"],
issues: null,
sla: {
daily: ["daily 1", "daily 2"],
},
lastUpdate: null,
},
error: null,
}
在这种情况下 ...state.data 解构运行良好,但 ...state.data.sla 不行
请有人帮助我!!!
【问题讨论】:
-
发生这种情况是因为
...payload.data。执行...state.data足以持久化状态。
标签: reactjs redux react-redux