Javascript 由于不可变的js,额外的字段被添加到redux存储中,如何停止? 背景

Javascript 由于不可变的js,额外的字段被添加到redux存储中,如何停止? 背景,javascript,ecmascript-6,redux,immutable.js,Javascript,Ecmascript 6,Redux,Immutable.js,我有一个react redux应用程序,它使用不可变的js 问题 在大多数情况下,这是完美的工作,但在应用程序中的一些还原添加几个额外的字段到我的redux存储 例子 我可以看到的字段如下 _根 __改变 大小 这只会在某些时候发生。当我使用同时合并当前状态的减速器时 case ActionType.SUCCESS_GET_DATA : { let newState = { ...state, [action.meta]: action.payload }; return s

我有一个react redux应用程序,它使用不可变的js

问题 在大多数情况下,这是完美的工作,但在应用程序中的一些还原添加几个额外的字段到我的redux存储

例子 我可以看到的字段如下

  • _根
  • __改变
  • 大小
这只会在某些时候发生。当我使用同时合并当前状态的减速器时

case ActionType.SUCCESS_GET_DATA : {
    let newState = { ...state, [action.meta]: action.payload };
    return state.merge(newState);
}
其中:
action.meta
是数据的唯一键/名称,
action.payload
是成功检索的数据

问题: 所以我可以看到,使用spread操作符创建一个新的状态会导致这些额外的字段被添加到我的状态中。那么,有没有一种方法可以在不添加这些额外字段的情况下使用spread运算符?

不可变映射始终会添加自己的“meta” 所以我得出结论,不可变映射总是会向状态添加自己的元。这是因为它是一个与对象合并的贴图

要解决这个问题,请使用方法
toJS()


现在,您正在将一个对象与一个对象合并。

是的,我刚刚发现,有趣的是,写一个这样的问题可以让您清晰地了解一下,谢谢Steeve。
case ActionType.SUCCESS_GET_DATA : {
    let jsState = state.toJS();
    let newState = { ...jsState, [action.meta]: action.payload };
    return state.merge(newState);
}