无法更新Set属性

时间:2019-02-12 14:36:36

标签: javascript immutable.js

var npm = require("npm")
var immutable = require("immutable");
var test = immutable.fromJS

const a = test({name:true,b:[]})
console.log(a);
a.set('name',false);

console.log("------------");
console.log(a.get('name')) // gives still value true.

最后一个控制台的期望值是多少?我认为那是真的。有人可以帮我解决我哪里错了

2 个答案:

答案 0 :(得分:3)

Immutable.js的要点是,您从中获得的对象是不可变的(无法更改)。类似于增幅器操作的操作返回新对象。所以:

a = a.set('name', false);

来自the documentation

  

set()

     

返回一个新地图,其中也包含新的键值对。如果此映射中已经存在等效键,则将替换它。

(我的重点)

答案 1 :(得分:2)

a未重新分配。 a.set返回一个新对象。

const a = Immutable.fromJS({name:true,b:[]})
console.log(a);
const newA = a.set('name',false);

console.log("------------");
console.log(a.get('name'));
console.log(newA.get('name'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>