最近我有这个错误在我的浏览器的控制台:未捕获的错误:“reducer”是必需的参数,并且必须是可以传递给combineReducers的函数或函数的对象
所以我试着解决了几个小时,但没有任何帮助。
从一开始,当我创建这个脚本时,我从另一个我半年前创建的脚本中复制了它的一些部分...然后我发现一些函数被弃用,并试图升级它们...
我以前的redux-store.js脚本是这样的:
...
let reducers = combineReducers({
auth: auth_reducer,
admin: admin_reducer,
index: index_reducer
})
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const store = createStore(
reducers,
composeEnhancers(
applyMiddleware(thunkMiddleware)
)
);
...
但后来我改变(升级)它和错误从标题出现... x1c 0d1x
5条答案
按热度按时间au9on6nz1#
直到我将函数configureStore()中的 * 参数名称 * 从reducers更改为reducer,才有所帮助
就像这样:
我希望这篇文章能帮助一些人保存调试时间;)
eivnm1vs2#
configureStore
实际上是以不同的方式使用的,它将自动设置开发工具和thunk。您只需执行以下操作(真正删除您在此处显示的所有其他代码!):
此外,这也是一个推动,你的整个应用程序可能会受益于现代Redux模式,因为现代Redux不再使用switch.. case reducer、ACTION_TYPES、不可变的reducer逻辑或连接。因此,它只占代码的1/4。
我建议您阅读Why Redux Toolkit is How To Use Redux Today并浏览官方的Redux Essentials Tutorial
a5g8bdjr3#
常量存储=配置存储({reducer})
yduiuuwa4#
在最新的更新中,createStore不再被使用。取而代之的是configureStore。我尝试传递一个reducer参数作为函数,但是,它不起作用。所以,我创建如下
标准Redux createStore函数的友好抽象,为存储设置添加了良好的默认值,以获得更好的开发体验。ConfigureStore
0qx6xfy65#
如果你写的是“reducers”而不是“reducer”,就会出现这个错误。