Путаница с тем, как работает неизменяемость Redux - PullRequest
0 голосов
/ 27 марта 2020

Я изучал 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; будет запущен, он изменит счетчик с 0 на 1 здесь

const initialState = {
  counter: 0
};

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

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

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

1 Ответ

0 голосов
/ 27 марта 2020

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...