Почему в избыточном выводе получается так -> Состояние изменено {} - PullRequest
0 голосов
/ 04 ноября 2019

Я изучаю редукцию с простым возрастом. Примером приращения и уклонения здесь является код

const { createStore } = require(`redux`);


const initialState = {age: 21};

const reducerOne = (state = initialState, action) => {
    const newState = {...state};
    if(action.type === `ADD`) {
        newState.age = action.value;
    }
    if(action.type === `SUBTRACT`) {
        newState.age = action.value;
    }
    return newState;
}

const store = createStore(reducerOne);

store.subscribe(() => {
    console.log(`State Changed` + JSON.stringify(store.getState()));
})

store.dispatch({type: `ADD`, val: 10});
store.dispatch({type: `SUBTRACT`, val: 5});

Но в выводе это выглядит так -> Состояние изменено {} Помогите, как это исправить и получитьВыход

1 Ответ

1 голос
/ 04 ноября 2019

Ваше действие публикует свойство val, а ваш редуктор читает свойство value.

Измените ваши действия таким образом, и это будет работать:

store.dispatch({type: `ADD`, value: 10});
store.dispatch({type: `SUBTRACT`, value: 5});

РЕДАКТИРОВАТЬ:

Вы заменяете старое значение age, но, возможно, вы хотите добавить или вычесть его. Вы должны изменить свой редуктор, чтобы добиться такого поведения:

const reducerOne = (state = initialState, action) => {
    const newState = {...state};
    if(action.type === `ADD`) {
        // add to the previous `age` value and do not overwrite it
        newState.age = state.age + action.value;
    }

    if(action.type === `SUBTRACT`) {
        // subtract from the previous `age` value and do not overwrite it
        newState.age = state.age - action.value;
    }
    return newState;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...