javascript – 无法在“Connect(App)”的上下文或道具中找到“store”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 无法在“Connect(App)”的上下文或道具中找到“store”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2672字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 无法在“Connect(App)”的上下文或道具中找到“store”](/upload/InfoBanner/zyjiaocheng/707/074286ab2c7040528de99fe70c45e8e4.jpg)
将多个文件的内容合并为一个以作为Redux的配置后,我遇到了错误配置的Redux的问题.
如何解决存储,同时将其保存在一个文件中?
Unhandled JS Exception: Could not find “store” in either the context
or props of “Connect(App)”. Either wrap the root component in a
, or explicitly pass “store” as a prop to “Connect(App)”.
'use strict';
import React, { Component } from 'react';
import { createStore, applyMiddleware, combineReducers, bindActionCreators } from 'redux';
import { Provider, connect } from 'react-redux';
import thunk from 'redux-thunk';
import * as screenActions from './redux/actions/screenActions';
import * as reducers from './redux/stores/reducers';
const createStoreWithMiddleware = applyMiddleware(thunk)(createStore);
const reducer = combineReducers(reducers);
const store = createStoreWithMiddleware(reducer);
import RootContainer from './redux/views/containers/rootContainer';
class App extends Component {
render() {
const { state, actions } = this.props;
return (
<Provider store={store}>
<RootContainer />
</Provider>
);
}
}
export default connect(
(state) => ({
state: state.reducer
}),
(dispatch) => ({
actions: bindActionCreators(screenActions, dispatch)
})
)(App);
解决方法:
> Provider,passes the store到嵌套在其中的组件,通常只需要应用于根组件(在你的情况下< RootContainer>
> connect connect与提供商店的组件连接,而不是与提供商店的组件连接.
建议的解决方案:
将连接移动到< RootContainer>而是组件文件,并传递连接RootContainer而不是App组件:
export default connect(
(state) => ({
state: state.reducer
}),
(dispatch) => ({
actions: bindActionCreators(screenActions, dispatch)
})
)(RootContainer); // <<--- here :)
更新:
鉴于OP希望在同一个文件中实现所有这些,您必须创建一个React元素来表示从connect创建的Redux容器,因此:
'use strict';
import React, { Component } from 'react';
import { createStore, applyMiddleware, combineReducers, bindActionCreators } from 'redux';
import { Provider, connect } from 'react-redux';
import thunk from 'redux-thunk';
import * as screenActions from './redux/actions/screenActions';
import * as reducers from './redux/stores/reducers';
const createStoreWithMiddleware = applyMiddleware(thunk)(createStore);
const reducer = combineReducers(reducers);
const store = createStoreWithMiddleware(reducer);
import RootContainer from './redux/views/containers/rootContainer';
// name has to be capitalised for React to recognise it as an element in JSX
const ConnectedRoot = connect(
(state) => ({
state: state.reducer
}),
(dispatch) => ({
actions: bindActionCreators(screenActions, dispatch)
})
)(RootContainer);
class App extends Component {
render() {
const { state, actions } = this.props;
return (
<Provider store={store}>
<ConnectedRoot /> <------USE IT HERE
</Provider>
);
}
}
内容总结
以上是互联网集市为您收集整理的javascript – 无法在“Connect(App)”的上下文或道具中找到“store”全部内容,希望文章能够帮你解决javascript – 无法在“Connect(App)”的上下文或道具中找到“store”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。