1
我正在遵循Redux网站上的Redux教程,我在使用联合收割机减速器时遇到了困难。如果我在不使用联合收割机减速器的情况下运行代码,它运行得很好。我一把单个减速器放入组合减速器的功能中。我得到这个:错误:";减速器";是必需的参数,并且必须是一个函数或可以传递给组合Reducers的函数对象。我做错了什么?
这是使用联合收割机减速器之前的商店
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;
作为第一个观察:您不需要手动添加thunk
中间件、调用composeWithDevTools
或调用applyMiddleware
-configureStore
API已经为您完成了所有
更具体地说,在这种情况下:我们通常将顶级reducer函数称为"reducer";根部减速器";对其进行分类。
但是:configureStore
希望您将其作为传递一个名为reducer
的字段,而不是传递一个名称为rootReducer
的字段。因此,它正确地指出了没有提供reducer
参数。
将其更改为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;