Путаница с тем, как работает неизменяемость Redux

Я изучал Redux и столкнулся с некоторой путаницей в том, как редуктор обновляет состояние. Например вот код:

const initialState = {
  counter: 0
};

const counterReducer = (state = initialState, action) => {
  if(action.type==="INCREASE"){
    return {
      counter: state.counter+1;
    }
  }
  return state;
};

Вопрос в том, когда этот counter: state.counter+1; кода counter: state.counter+1; здесь будет изменен счетчик с 0 на 1

const initialState = {
  counter: 0
};

Что меня смущает, так это то, что, если он постоянно изменяется, то возможно, что предыдущее состояние запоминается, если этот код выполняется:

  if(action.type==="INCREASE"){
    return {
      counter: state.counter+1;
    }

больше чем единожды. Надеюсь, вы поняли, если не, пожалуйста, дайте мне знать

Всего 1 ответ


counterReducer не нуждается в доступе к предыдущему состоянию.

state.counter+1; получает доступ к текущему значению state.counter, а не к предыдущему значению.
Надеюсь, я не правильно понял вопрос.

Отредактируйте 1 для вопроса: Khreshna, ok but where does current state come from?
Если вы знакомы с другим языком, "10" + 1 вернет множество ошибок, говорящих, что вы не можете выполнить математическую операцию со строкой и целым числом. Но не яваскрипт.

JS имеет приведение типов, что означает, что он может преобразовывать типы в другие типы в отношении операций.
Короче говоря, в JS "10" + 1 вернется 101 ( int 1 преобразуется в строку).
В null + 1 вернет 1 . И вот как вы получили значение, даже если вы никогда не устанавливали значение для счетчика


Есть идеи?

10000