首页 > 解决方案 > 元素类型无效:应为字符串/检查 `Provider` 错误的渲染方法

问题描述

我有以下代码:

import React from 'react';
import ReactDOM from 'react-dom';
import rootReducer from './redux/reducers/rootReducer';
import {Provider} from 'react-redux';
import {createStore, applyMiddleware} from 'redux';
import {BrowserRouter} from 'react-router-dom';
import thunk from 'redux-thunk';
import Main from './Main';

import './i18n';

const store = createStore(rootReducer,
    {},
    applyMiddleware(thunk));

ReactDOM.render(<Provider store={store}><BrowserRouter><Main/></BrowserRouter></Provider>, document.getElementById('app'));

但是当我尝试运行它时,我得到:

元素类型无效:应为字符串(用于内置组件)或类/函数(用于复合组件)但得到:对象。

检查Provider.

我的Main课看起来像这样:

function mapStateToProps(state) {
    return {
        dashboard: state.dashboard
    }
}

function mapDispatchToProps(dispatch) {
    return bindActionCreators(actions, dispatch)
}

const Main = withRouter(connect(mapStateToProps, mapDispatchToProps)(App));

export default Main;

问题是什么?

标签: reduxreact-redux

解决方案


我正在使用react-redux@6.0. 来自文档: https ://github.com/reduxjs/react-redux/releases/tag/v6.0.0

不再支持将 store 作为 prop 传递给连接的组件。相反,您可以将自定义 context={MyContext} 属性传递给 和 。您也可以通过 {context : MyContext} 作为连接选项。

无论如何,降级5.1解决它。


推荐阅读