You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按教程配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:36:21