我试图将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)
在您的示例中,我没有看到您配置的位置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)
| 归档时间: |
|
| 查看次数: |
4916 次 |
| 最近记录: |