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

Redux Persist报错TypeError: store.dispatch is not a function如何解决?

问题根源

你在redux/store.js中错误地将store定义为了返回store实例的工厂函数,而非直接导出store实例:

  • 你传递给Provider组件的store是函数本身,函数没有dispatch方法,因此触发报错
  • 你调用persistStore时传入的也是函数,同样不符合入参要求

修复方案

第一步:修改redux/store.js代码

将store的定义从工厂函数改为直接生成实例:

import {configureStore, combineReducers} from '@reduxjs/toolkit'
import cartReducer from './cartRedux'
import userReducer from './userRedux'
import {
  persistStore,
  persistReducer,
  FLUSH,
  REHYDRATE,
  PAUSE,
  PERSIST,
  PURGE,
  REGISTER,
} from 'redux-persist'
import storage from 'redux-persist/lib/storage'

const persistConfig = {
  key: 'root',
  version: 1,
  storage,
}

const rootReducer = combineReducers({user: userReducer, cart: cartReducer})
const persistedReducer = persistReducer(persistConfig, rootReducer)

// 去掉工厂函数的包装,直接生成store实例
export const store = configureStore({
  reducer: persistedReducer,
  middleware: (getDefaultMiddleware) =>
    getDefaultMiddleware({
      serializableCheck: {
        ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],
      },
    }),
})


export const persistor = persistStore(store)

第二步:确认入口文件无需改动

你现有index.js的导入、传递逻辑已经符合要求,修改完store.js后直接重启项目即可解决报错。

内容的提问来源于stack exchange,提问作者marsh3476

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:57:03