javascript - immutableJS - updateIn 方法无法按预期工作

标签 javascript immutable.js

我在不可变的js中有一个像这样的结构的 map :

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

然后我想更新ds的值。

我尝试过:

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");
    });
});

但如您所知,这些不起作用。

如何更新ds的值?

最佳答案

我找到了上面的代码不起作用的原因。

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

部分表示逻辑是正确的,但 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) => expression

// equivalent to: (param1, param2, …, paramN) => { return expression; }

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

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

关于javascript - immutableJS - updateIn 方法无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46416644/

相关文章:

javascript - 在 JavaScript 中将对象设置为键值(值是数组或列表)的 Immutable Map

javascript - 需要通过 javascript API 在 R 内 Shiny 的 Tableau 图表的 Hello world 示例

javascript - 用于延长容器的 JQuery 动画不起作用

javascript - React - 将引用传递给 react-portal 的正确方法

javascript - 创建 Immutable.Record 实例时是否需要使用 'new' 运算符?

javascript - 为什么 JavaScript 中的不变性如此重要(或需要)?

javascript - 在 DevTools 中检查 ImmutableJS 对象

javascript - 如何将PHP Post数据放入jquery ajax请求中?

javascript - 将 ajax 函数转换为 jquery

javascript - Netflix Falcor 与 Immutable.js 一起工作?