Почему я получаю «Ожидается, что редуктор станет функцией»?

Я получаю голову от сокращения / реакции, но у меня проблемы с моим редуктором:

const reducer = (state = 0, action) => {
  switch (action.type) {
    case "INCREMENT":
      return state++;

    default:
      return state;
  }
};

Попытка ввести это в мой магазин:

const store = createStore(reducer);

Как я могу избежать этой ошибки?

ссылка на codepen

Всего 1 ответ


Спасибо за песочницу!

Ваша переменная «редуктор» не определяется при выполнении createStore . Либо 1) определите его, прежде чем использовать его, либо 2) определите его с помощью объявления функции:

function reducer(state = 0, action) {
  switch (action.type) {
    case "INCREMENT":
      return state++;

    default:
  return state;
  }
}

что заставляет его «подниматься» (см. « Подтверждение декларации функций »).

После этого вы заметите, что получите следующую ошибку:

Ожидаемый слушатель должен быть функцией.

на store.subscribe(App); , Это связано с тем, что декларации классов не поднимаются (см. « Подъем »). Таким образом, вам понадобится объявление класса App перед store.subscribe(App); ,


Есть идеи?

10000