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

Vel*_*dan 5 immutable.js react-redux

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

const initialState = Map({
    isUserAuthorized : false,
    pending : false
});
Run Code Online (Sandbox Code Playgroud)

我想更新两者。我怎么能做到这一点?我尝试使用这样的标准 Update 方法:

state.update( "isUserAuthorized", () => true, "pending", () => false);
Run Code Online (Sandbox Code Playgroud)

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

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

PS 我发现它可以通过setwithMutations来完成,例如:

initialState.withMutations(map => {
            map.set("isUserAuthorized", true).set("pending", false);
        })
Run Code Online (Sandbox Code Playgroud)

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

Alb*_*ivé 6

您可以使用.set()

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

initialState = initialState.set('isUserAuthorized', true);
initialState = initialState.set('pending', false);
Run Code Online (Sandbox Code Playgroud)

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

另一种方法是使用.merge()

const newState = initialState.merge({
    isUserAuthorized: true, 
    pending: false
});
Run Code Online (Sandbox Code Playgroud)

或者链接多个集合:

initialState = initialState.set('isUserAuthorized', true)
    .set('pending', false)
    .set('key3', 'value3'); 
Run Code Online (Sandbox Code Playgroud)