代码之家  ›  专栏  ›  技术社区  ›  Sai Ram

无法更新集合属性

  •  1
  • Sai Ram  · 技术社区  · 7 年前
    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 回复  |  直到 7 年前
        1
  •  2
  •   Daniel A. White    7 年前

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

    &13;
    &13;
    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'));
    和13;
    <script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>
    和13;
    >13;
    >13;
        2
  •  3
  •   T.J. Crowder    7 年前

    immutable.js的要点是,从中获得的对象是不可变的(不能更改)。看起来像mutator operations的操作返回一个新对象。所以:

    a = a.set('name', false);
    
    从… the documentation

    < Buff行情>

    <强> set()

    返回一个还包含新键、值对的 new map。如果此映射中已存在等效密钥,则将替换它。

    < /块引用>

    (我的重点)