代码之家  ›  专栏  ›  技术社区  ›  Stav Alfi

set操作在做什么?

  •  1
  • Stav Alfi  · 技术社区  · 7 年前

    从下面的例子来看,我显然做错了什么。

    我想更新一下 node2.data 9 . 但结果是 node1.data===9 (在新树中)和 node1.next

    为什么?

    const node2 = {data: 2, next: []};
    const node1 = {data: 1, next: [node2]};
    
    const head1 = Immutable.fromJS(node1);
    const head2 = head1.get('next').get(0).set('data', 9);
    console.log(head2.get('data')); // 9
    console.log(head2.get('next').get(0)); // undefined
    // expected output: 1 and {.... object ...}!==undefined
    <script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/4.0.0-rc.12/immutable.js"></script>
    1 回复  |  直到 7 年前
        1
  •  1
  •   brietsparks    7 年前

    尝试 setIn :

    const head2 = Immutable.setIn(head1, ['next', 0, 'data'], 9)