2
私のプロジェクトはReact-Redux Providerを使用しています。React-Reduxプロバイダが動作しません
ReactDOM.render(
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>
, document.getElementById('root'));
と
class App extends Component {
componentDidMount(){
API.getCategories().then((categories)=>{
this.props.dispatch(addCategories(categories))
})
API.getAllPosts().then(posts => {
console.log('getAllPosts', posts)
})
}
render() {
return (
<div className="App">
<Route exact path="/" render={()=>{
return (
<div>
{
this.props.categories.map((category)=>{
return (
<Link key={category.name} to={`/category/${category.name}`} params={{category: category.name}} >{category.name}</Link>
)
})
}
</div>
)
}}
/>
<Route path="/category/:category" component={Category} />
</div>
);
}
}
function mapStateToProps(x) {
return {
categories: x.categories
}
}
// export default App;
export default withRouter(connect(
mapStateToProps,
)(App))
上記のコードから、前のプロジェクトからの私の経験に基づいて、分類コンポーネントのthis.props
は私がアクションを呼び出すことができdispatch
方法を持っているが、いくつかのためにすべきですそれがない理由。
これは私のカテゴリーのコンポーネントです:
class Category extends Component {
componentDidMount(){
console.log('this.props of Category', this.props)
var category = this.props.match.params.category
API.getPosts(category).then((posts)=>{
console.log('after getPosts', posts)
this.props.dispatch(addAllPosts(posts))
})
}
render(){
return <p>Category</p>
}
}
export default Category
私はここで何をしないのです?
プロバイダ要素をラップするだけでは不十分です。州をプロップにマップし、ディスパッチ機能を渡すカテゴリコンポーネントの周りにコンテナコンポーネントを作成する必要があります。ドキュメント:http://redux.js.org/docs/basics/UsageWithReact.htmlを参照してください。 –