リアクタのhistory.push('/route')
をRedux
とどのように使うのかちょっと分かりません。Redux&React Router:ディスパッチとナビゲーションを組み合わせる(history.push)
つまり、ReduxのmapDispatchToProps
でコンポーネントを接続すると、特定のアクションをディスパッチした後に解雇されると思われるhistory.push('/route')
をどうやって入れますか?
問題を明確にするためには、ここに
class PostContainer extends React.Component {
handleSubmit(data) {
return this.props.addPost(data);
}
render() {
return (<Post onSubmit={data=> this.handleSubmit(data)}/>);
}
}
const mapDispatchToProps = (dispatch) => {
return {
addPost: (data) => {
dispatch(addPost(data)).data.then((result) => {
dispatch(addPostFulfilled(result.data));
//How do you call the following function?
this.props.history.push('/posts')
}).catch((error) => {
dispatch(addPostRejected());
});
},
}
}
export default connect(null, mapDispatchToProps)(PostContainer);
あなたはできるだけ早くポストはaddPostFulfilled
を通じて再来の状態に追加されると、見ることができるように、ページが移動する必要があります...私の実験の抜粋です/posts
via history.push
Reduxのドキュメントによれば、コンテナは状態の更新(データの取得だけでなく)のために作られています。だから、ダムコンポーネントはhistory.push
のようなものを置くはずではありません。
上記のコードよりも優れた方法はありますか?
アドバイスをいただければ幸いです。
ありがとうございました。だから、 'mapDispatchToProps'の中にReduxのアクション以外のものを持つことは容認できますか?あなたのコードは正常に動作しますが、私はまだmapDispatchToPropsで 'done( '/ posts')'を見るのが面倒です。なぜなら、React Routerの履歴自体は 'Dispatch'とは関係ないからです(私は' router-redux')。つまり、 'mapDispatchToProps'はReduxのアクションを扱っているように見えます。私は思っていますか? – Hiroki