Неизменный JS и Redux - PullRequest
       39

Неизменный JS и Redux

0 голосов
/ 15 октября 2018

Я использую redux с Immutable JS.Мой state - это Immutable 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 голосов
/ 15 октября 2018

Вы можете сделать следующее:

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

Массив - это путь во вложенных свойствах вашего объекта, последний - это новое значение.

...