【问题标题】:Why arrays in Immutable.js records are mutable?为什么 Immutable.js 记录中的数组是可变的?
【发布时间】:2017-03-18 07:42:10
【问题描述】:

我注意到在下面的代码中

const TaskRecord = new Immutable.Record({
  name: '',
  requiredFor: [],
});

class Task extends TaskRecord {
}

const task = new Task();

task.requiredFor 实际上是一个数组(在 Task 类中调用 get('requiredFor') 会产生相同的结果)并且不会转换为 Immutable.List... 这样记录就不是不可变的。

为什么会这样?如何解决这个问题?

【问题讨论】:

  • 只有Immutable.Record 是不可变的。你无法修复它,它是故意的。

标签: javascript record immutable.js


【解决方案1】:

似乎在构造函数中制造魔法就可以了:

class Task extends TaskRecord {

   constructor(values) {
       super(Immutable.fromJS(values));
   }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    • 2017-11-25
    • 2016-10-05
    • 2017-02-17
    相关资源
    最近更新 更多