react-redux - Immutable.js 更新 Map 中的多个键值

标签 react-redux immutable.js

我正在尝试使用 Immutable.js。所以我使用了 Map 对象,并且我有一个 2 个字段作为例子。

const initialState = Map({
    isUserAuthorized : false,
    pending : false
});

我想更新两者。我怎么能做到这一点?我尝试使用这样的标准 Update 方法:
state.update( "isUserAuthorized", () => true, "pending", () => false);

但它以某种方式不起作用。所以我只有一个想法 - 只更新特定的键,然后对其他键执行相同操作并返回结果。

但我认为这是一个不那么完美的想法。也许存在其他正常变体?谢谢你的帮助!

附言我发现它可以通过 完成集 withMutations 喜欢:
initialState.withMutations(map => {
            map.set("isUserAuthorized", true).set("pending", false);
        })

但是在 Map 中更新多个值真的有那么难吗?

最佳答案

您可以使用 .set() :

const initialState = Map({
    isUserAuthorized : false,
    pending : false
});

initialState = initialState.set('isUserAuthorized', true);
initialState = initialState.set('pending', false);

如果不想重复的话。您可以创建一个函数来传递多个参数。

另一种方法是使用 .merge() :
const newState = initialState.merge({
    isUserAuthorized: true, 
    pending: false
});

或者链接多个集合:
initialState = initialState.set('isUserAuthorized', true)
    .set('pending', false)
    .set('key3', 'value3'); 

关于react-redux - Immutable.js 更新 Map 中的多个键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41671986/

相关文章:

reactjs - React Redux 处理 DOM 元素启用/禁用的方式

reactjs - 当状态第一次更新时,componentWillReceiveProps 不会触发

javascript - 如何在 native react 中保存/下载生成二维码

javascript - 如何将新项目推送到 immutableJS 中的深层嵌套记录中

javascript - 在 react-js 中使用 immutable-js 时使用 PropTypes

javascript - 对象分配扩展对象的不可变数组

javascript - 使用 immutable.js 操作 Redux 中嵌套数组中的数据

javascript - 我应该在 React/Redux 中将脚本放在哪里?

javascript - 提供给 textinput 的类型 number 的无效 prop 值预期字符串 react native

javascript - Immutable.js 和 flatMap 等效函数