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

fquxozlt  于 2022-11-12  发布在  其他
关注(0)|答案(5)|浏览(204)

最近我有这个错误在我的浏览器的控制台:未捕获的错误:“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

au9on6nz

au9on6nz1#

直到我将函数configureStore()中的 * 参数名称 * 从reducers更改为reducer,才有所帮助
就像这样:

...
let reducers = combineReducers({
     book: booking_reducer,
     admin: admin_reducer,
})

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const store = configureStore(
        {reducer:reducers},
        composeEnhancers(
            applyMiddleware(thunkMiddleware)
        )
    );
...

我希望这篇文章能帮助一些人保存调试时间;)

eivnm1vs

eivnm1vs2#

configureStore实际上是以不同的方式使用的,它将自动设置开发工具和thunk。
您只需执行以下操作(真正删除您在此处显示的所有其他代码!):

const store = configureStore({
  reducer:{
     book: booking_reducer,
     admin: admin_reducer,
  }
})

此外,这也是一个推动,你的整个应用程序可能会受益于现代Redux模式,因为现代Redux不再使用switch.. case reducer、ACTION_TYPES、不可变的reducer逻辑或连接。因此,它只占代码的1/4。
我建议您阅读Why Redux Toolkit is How To Use Redux Today并浏览官方的Redux Essentials Tutorial

a5g8bdjr

a5g8bdjr3#

常量存储=配置存储({reducer})

yduiuuwa

yduiuuwa4#

在最新的更新中,createStore不再被使用。取而代之的是configureStore。我尝试传递一个reducer参数作为函数,但是,它不起作用。所以,我创建如下

const store = configureStore({ reducer: counterReducer });

标准Redux createStore函数的友好抽象,为存储设置添加了良好的默认值,以获得更好的开发体验。ConfigureStore

0qx6xfy6

0qx6xfy65#

如果你写的是“reducers”而不是“reducer”,就会出现这个错误。

export const store= configureStore({
    reducer:{
        posts:postsReducer

    }
})

相关问题