我有一个使用不可变js的react redux应用程序。
在大多数情况下,这是完美的工作,但应用程序中的一些减速器正在向我的redux商店添加几个额外的字段。
我能看到的字段如下
这只会在某些时候发生。当我使用也合并当前状态的reducer时。
case ActionType.SUCCESS_GET_DATA : {
let newState = { ...state, [action.meta]: action.payload };
return state.merge(newState);
}
其中:action.meta
是数据的唯一键/名称,action.payload
是成功检索的数据。
所以我可以看到使用spread运算符创建一个新状态会导致这些额外的字段被添加到我的状态。那么有没有办法使用扩展运算符而不添加这些额外的字段?
答案 0 :(得分:0)
所以我得出的结论是,Immutable地图总是会为状态添加自己的元数据。这是因为它的地图与对象合并。
要解决此问题,请使用方法toJS()
case ActionType.SUCCESS_GET_DATA : {
let jsState = state.toJS();
let newState = { ...jsState, [action.meta]: action.payload };
return state.merge(newState);
}
现在您正在将对象与对象合并。