React-Redux中出现TypeError: store.getState is not a function错误求助
解决TypeError: store.getState is not a function的Redux问题
嘿,我一眼就看出问题所在啦!你当前导出的不是一个已经初始化好的Redux Store实例,而是一个用来创建Store的函数——这就是为什么调用store.getState()会报错,因为函数本身没有这个方法呀。
问题根源
看你这段代码:
export default function store() { return createStore( rootReducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() ); }
你导出的是名为store的函数,当你在其他文件里导入并直接调用store.getState()时,本质上是在对一个函数调用getState,自然会触发TypeError。
修复方案
根据你的需求,有两种常见的修复方式:
方式一:直接导出Store实例(最常用)
如果你不需要动态创建多个Store或者传入自定义初始状态,直接创建好Store并导出即可:
import { createStore } from 'redux'; import rootReducer from '../reducers/index.js'; // 直接创建Store实例 const store = createStore( rootReducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() ); export default store;
之后在其他文件里导入这个store,就能直接调用store.getState()、store.dispatch()等方法了。
方式二:保留函数形式(按需创建)
如果你需要根据不同场景传入初始状态,或者要创建多个Store实例,可以保留函数,但使用时必须先调用函数得到Store实例:
比如在入口文件中:
import createStore from './store/index.js'; // 调用函数创建Store实例 const store = createStore(); // 现在可以正常使用getState了 console.log(store.getState());
小提示
大多数Redux应用场景下,方式一就足够用了,因为通常我们只需要一个全局的Store实例来管理应用状态。
内容的提问来源于stack exchange,提问作者Sokratis V
相关产品推荐
相关产品推荐

