提供给`Provider`的类型`function`的子上下文`store`无效,期望`object`

Sal*_*ara 4 reactjs redux

我试图将reducers中的状态连接到我的react组件中的组件.以下是reducer的代码reducer_books.js:

export default function(){
  return [
      {title:'A'},
      {title:'E'}
  ];
}
Run Code Online (Sandbox Code Playgroud)

然后,我将它添加到联合收割机减速机中index.js:

import {combineReducers} from 'redux';
import BookReducer from './reducer_books';


const rootReducer= combineReducers({
  books:BookReducer
});

export default rootReducer;
Run Code Online (Sandbox Code Playgroud)

最后,我尝试将其添加到父组件中:

import State from './reducer/index';
import { Provider } from 'react-redux';

ReactDOM.render(
  <Provider store={State}>
      <App />
    </Provider>, document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)

在目标组件中我有:

import React,{Component} from 'react';
import {connect} from 'react-redux';

class BookList extends Component{
  renderList(){
        return this.props.books.map((book)=>{
          <li key={book.title}>{book.title}</li>
        });
    }

  render(){

    return(
      <div>
        <ul>
          {this.renderList()}
        </ul>
      </div>);
  }
}

function mapStateToProps(state){
  return{
    books:state.books
  };
}

export default connect(mapStateToProps)(BookList);
Run Code Online (Sandbox Code Playgroud)

不幸的是,它抱怨:

Warning: Failed prop type: Invalid prop `store` of type `function` supplied to `Provider`, expected `object`.
    in Provider (at index.js:11)
Warning: Failed childContext type: Invalid child context `store` of type `function` supplied to `Provider`, expected `object`.
    in Provider (at index.js:11)
Warning: Failed context type: Invalid context `store` of type `function` supplied to `Connect(BookList)`, expected `object`.
    in Connect(BookList) (at App.js:35)
    in div (at App.js:33)
    in div (at App.js:32)
    in App (at index.js:12)
    in Provider (at index.js:11)
Uncaught TypeError: _this.store.getState is not a function
Error: Attempted to update component `Connect(BookList)` that has already been unmounted (or failed to mount)
Run Code Online (Sandbox Code Playgroud)

Ale*_* T. 9

在您的示例中,我没有看到您配置的位置Store,我想您错过了这一步

import reducers from './reducer/index';
import { Provider } from 'react-redux';
import { createStore } from 'redux';

const Store = createStore(reducers);

ReactDOM.render(
  <Provider store={ Store }>
    <App />
  </Provider>, document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)