React Router의 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의 액션 이외의 것을 사용하는 것이 허용 될까요? React Router의 history 자체는'Dispatch'와는 관련이 없기 때문에 mapDispatchToProps에서'done ('/ posts')'를 볼 때 조금 어색함을 느낍니다. ('react- 라우터 - redux'). 제 말은,'mapDispatchToProps'는 Redux의 행동을 다루는 것 같지만 다른 것은 아닙니다. 내가 지나치게 생각하고 있니? – Hiroki