如何使用 Immer.js 在 reducer 中添加新字段?

问题描述

例如

state = {
  data: {}
}

如何将新的嵌套字段添加到对象中? 我无法设置该字段,因为有错误 Cannot read property 'date' of undefined

const reducer = produce((draft,action) => {
   switch (action.type) {
      case 'ACTION_SUCCESS':
      draft.data.children.date = action.response;
   }
});

因此我想要:

  data: {
     children: {
        data: 'date'
     }
  }
}

解决方法

普通 JS 对象操作规则适用于此。如果还没有 obj.x.y.z = 字段,则不能写入 .y - 您必须先创建该字段。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...