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
相关产品推荐
相关产品推荐

