immutableJS - updateIn方法没有按预期工作

时间:2017-09-26 01:52:37

标签: javascript immutable.js

我在不可变的js中有这样的结构地图:

myMap = {
    a: {
        b: {
            c: [
                { d: "something1", ... },
                { d: "something2", ... }
            ],
            ...
        },
        ...
    },
    ...
}

然后我想更新d s。

的值

我尝试过:

myMap.updateIn(["a", "b", "c"], (each) => {
    each.set("d", "something else");
});

并且喜欢:

myMap.updateIn(["a", "b", "c"], (each) => {
    each.map((e) => {
        e.set("d", "something else");
    });
});

但是如你所知,那些不起作用。

如何更新d s?

的值

1 个答案:

答案 0 :(得分:1)

我找到了上述代码无效的原因。

首先,第二个代码是部分正确,但第一个是错误的。

部分表示逻辑正确,但ES6的语法不正确。

所以,正确的代码是:

const updatedMyMap = myMap.updateIn(["a", "b", "c"], each => 
    each.map(e => e.set("d", "something else"))
);

arrow function docs

  

(param1,param2,...,paramN)=> {statements}

     

(param1,param2,...,paramN)=>的表达

     

//相当于:(param1,param2,...,paramN)=> {return expression; }

这就是我的代码不起作用的原因。

我应该返回map()的结果。