redux --未捕获的错误:“reducer”是必需参数,并且必须是可以传递给combineReducers的函数或函数的对象

xv8emn3q  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(169)

1
我正在Redux网站上学习Redux教程,但我在使用合并reducers时遇到了困难。如果我在没有combined reducers的情况下运行代码,它会正常工作。一旦我将单个reducers放入combined reducers函数中,我会得到以下结果:错误:“reducer”是必需的参数,并且必须是一个函数或函数的对象,才能传递给combineReducers。我做错了什么?
以下是合并减速机使用前的存放

import {configureStore , combineReducers} from "@reduxjs/toolkit"
 import { applyMiddleware } from "redux";
 import thunk from "redux-thunk";
 import { composeWithDevTools } from "redux-devtools-extension";
import { productReducer } from "./reducers/productReducer";

const rootReducer = combineReducers({
  products:productReducer
});

 let initialState = {};

 const middleware = [thunk];

const store = configureStore(
   rootReducer,
   initialState,
   composeWithDevTools(applyMiddleware(...middleware))
 );

 export default store;
niknxzdl

niknxzdl1#

作为第一个观察结果:您不需要手动添加thunk中间件、调用composeWithDevTools或调用applyMiddleware-configureStore API已经为您完成了 * 所有 * 这些操作!
更具体地说,在这种情况下:我们通常将顶层归约器函数称为“根归约器”来对其进行分类。
然而:configureStore期望你将其作为**一个名为reducer*的字段传递,而你传递的是一个名为rootReducer的字段。
把它改成reducer: rootReducer,它就能工作了。
就这一点而言,它是preloadedState,而不是initialState
但是,configureStore * 也会 * 自动为您调用combineReducers
并且 * 您不需要提供空对象。

import {configureStore , combineReducers} from "@reduxjs/toolkit"
import { productReducer } from "./reducers/productReducer";

const store = configureStore({
   reducer: {
    products: productReducer
   },
});

 export default store;

相关问题