首页 > 解决方案 > 为什么我会得到“预期减速器是一个函数。”?

问题描述

我对 redux/react 有所了解,但我的减速器有问题:

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

    default:
      return state;
  }
};

试图将其注入我的商店:

const store = createStore(reducer);

我怎样才能避免这个错误?

链接到代码笔

标签: reactjsreduxreact-redux

解决方案


感谢沙盒!

执行时未定义您的“reducer”变量createStore。1)在使用之前定义它,或者 2)用函数声明定义它:

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

    default:
  return state;
  }
}

这导致它被“提升”(参见“函数声明提升”)。

之后,您会注意到您收到后续错误:

预期的侦听器是一个函数。

store.subscribe(App);。这是因为类声明没有被提升(参见“提升”)。App所以你会想要before的类声明store.subscribe(App);


推荐阅读