React-Redux报错求助:Connect(Filters)无法找到Store
解决Redux的"Invariant Violation: Could not find 'store'"错误
嘿,我来帮你搞定这个Redux的报错!这个错误的核心原因很明确:你的Connect(Filters)组件没办法获取到Redux store——要么是它没被包裹在Redux的<Provider>组件里,要么就是你没给它显式传递store属性。
Redux的connect高阶组件默认是通过Provider提供的上下文(context)来获取store的,这也是最规范、最省心的用法。结合你给出的根组件代码,我给你整理了具体的修复步骤:
步骤1:创建Redux Store实例
首先你需要调用configureStore函数生成一个store实例,这是连接Provider的基础:
const store = configureStore();
步骤2:用Provider包裹根组件
把你的Root组件整个包裹在<Provider>里面,并把刚才创建的store作为store属性传递进去。这样所有被connect包裹的子组件(包括你的Filters)都能自动访问到store了。
修复后的完整根组件代码大概是这样:
import { AppContainer } from 'react-hot-loader'; import React from 'react'; import { render } from 'react-dom'; import { Provider } from 'react-redux'; import Root from './Root'; import configureStore from './store/configureStore'; // 生成store实例 const store = configureStore(); render( <AppContainer> {/* 关键:用Provider包裹Root,传入store */} <Provider store={store}> <Root /> </Provider> </AppContainer>, document.getElementById('root') // 这里替换成你实际的根DOM节点ID );
(可选)特殊场景下显式传递store
如果某些特殊情况你不想用Provider,也可以直接给Connect(Filters)组件传递store属性,但这种方式不够优雅,不推荐在全局使用:
// 在使用ConnectedFilters的地方 import { connect } from 'react-redux'; import Filters from './Filters'; const ConnectedFilters = connect(mapStateToProps, mapDispatchToProps)(Filters); // 显式传递store <ConnectedFilters store={store} />
按照上面的步骤修改后,你的Filters组件就能正常获取到store,这个错误应该就消失啦!
内容的提问来源于stack exchange,提问作者Jose
相关产品推荐
相关产品推荐

