React.js配置redux-persist做状态持久化报store.getState is not a function如何解决
问题根因
错误来自store实例导入逻辑错误,具体原因:
- 你的
store.js文件默认导出的是一个「返回store和persistor对象的工厂函数」,不是直接导出store/persistor实例 - 你在
index.js中两次import默认导出的内容,拿到的都是这个工厂函数本身,不是实际的store和persistor实例,把函数传给Provider的store属性,自然不存在getState方法。
修复方案
两种方案任选其一即可:
方案1:修改入口文件index.js的导入逻辑
把原来的导入代码:
import store from "./store/"; import persistor from "./store/";
改成先执行工厂函数解构取值即可,其余代码保持不变:
import getStorePersistor from "./store/"; const { store, persistor } = getStorePersistor();
方案2:修改store.js的导出逻辑(更符合常规使用习惯)
如果不想每次调用工厂函数,可以直接在store.js里实例化后导出对象:
把store.js末尾的导出代码:
export default () => { let store = createStore(persistedReducer); let persistor = persistStore(store); return { store, persistor }; };
改成:
export const store = createStore(persistedReducer); export const persistor = persistStore(store);
然后对应修改index.js的导入语句:
import { store, persistor } from "./store/";
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

