不可变的JS和Redux

时间:2018-10-15 12:55:28

标签: javascript reactjs redux immutable.js

我将reduxImmutable JS一起使用。 我的stateImmutable JS对象,类似

const initialState = Immutable.fromJS({
    bar: 1
    foo: {
        bar: 'a',
        foo: 'b',
        foobar: [
            {
               ...
        ...
    ...

现在我有了减速器,通常我会做

export function foo(state = initialState, action) {
    switch (action.type) {
        case FOO:
            return {
                ...state,
                foo: {
                    ...state.foo,
                    bar: action.value
                }
            };
        ...

但是,现在我正在使用Immutable JS,我需要这样做

export function foo(state = initialState, action) {
    switch (action.type) {
        case FOO:
            return {
                ...state, // do I need to change something here too?
                foo: {
                    ...state.get('foo'), // this changed
                    bar: action.value
                }
            };
        ...

但是,这使我的商店混乱了。除bar: action.value外,我什么都放不下。似乎...state.get('foo')不等于...state.foo

如何正确执行?还是我在这里使用Immutable JS错误?

1 个答案:

答案 0 :(得分:0)

您应该能够做到:

return state.set(['foo', 'bar'], value)

数组是对象嵌套属性中的路径,最后一个是新值。