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.
最后一个控制台的期望值是多少?我认为那是真的。有人可以帮我解决我哪里错了
答案 0 :(得分:3)
Immutable.js的要点是,您从中获得的对象是不可变的(无法更改)。类似于增幅器操作的操作返回新对象。所以:
a = a.set('name', false);
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>