按教程配置Redux DevTools遇错误,请求排查遗漏点
问题描述
按照Redux DevTools配置教程操作后,出现Expected the reducer to be a function错误,我的代码如下:
import {StrictMode} from 'react' import {createRoot} from 'react-dom/client' import { createStore } from 'redux' import { composeWithDevTools } from 'redux-devtools-extension' import App from './App' import './styles/globals.css' import { store } from './store/store' import { Provider } from 'react-redux' import { BrowserRouter as Router, Routes, Route } from 'react-router-dom' const rootElement = document.querySelector('#main') const root = createRoot(rootElement) const currentStore = createStore( store, composeWithDevTools() ) root.render( <StrictMode> <Provider store={currentStore}> <Router> <Routes> <Route path="/*" element={<App />} /> </Routes> </Router> </Provider> </StrictMode> )
问题原因与修复
核心错误:createStore的第一个参数必须是reducer函数,但你传入的是已经创建好的store实例(从./store/store导入的store),类型不匹配导致报错。
根据./store/store.js的实际内容,有两种修复方案:
方案一:若./store/store.js已创建好完整store
删除当前文件中手动创建currentStore的代码,直接使用导入的store:
// 删掉这段多余的store创建代码 // const currentStore = createStore( // store, // composeWithDevTools() // ) root.render( <StrictMode> <Provider store={store}> {/* 直接使用导入的store */} <Router> <Routes> <Route path="/*" element={<App />} /> </Routes> </Router> </Provider> </StrictMode> )
方案二:若./store/store.js导出的是reducer函数
修改导入名称,并将reducer传入createStore:
// 把导入的store改为reducer import { reducer } from './store/store' // 正确传入reducer创建store const currentStore = createStore( reducer, composeWithDevTools() )
内容的提问来源于stack exchange,提问作者user11100667
相关产品推荐
相关产品推荐

