最近,我已经从使用一个乐观操作过渡到另外两个以检测成功/失败服务器响应。
通过乐观的方法,我能够以简约的方式传递我的行动并从承诺链中传递出来:
B = A((cols - 1) * size(A, 1) + (1:numel(cols)).');
% 3
% 9
现在我正在调度多个操作并使用class Post extends Component {
onUpdateClick(props) {
this.props.updatePost(this.props.params.id, props)
.then(() => /* Action goes here */);
}
}
...
export default connect(mapStateToProps, { updatePost })(Post);
操作返回undefined。
mapDispatchToProps
这里发生了什么?请注意,我正在使用Uncaught (in promise) TypeError: Cannot read property 'then' of undefined
。
redux-promise
function mapDispatchToProps(dispatch) {
return {
dispatch(updatePost(id, props))
.then(result => {
if (result.payload.response && result.payload.response.status !== 200) {
dispatch(updatePostFailure(result.payload.response.data));
} else {
dispatch(updatePostSuccess(result.payload.data));
}
});
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Post);
export function updatePost(id, props) {
const request = axios.put(`${ROOT_URL}/posts/${id}`, props);
return {
type: UPDATE_POST,
payload: request,
};
}
export function updatePostSuccess(activePost) {
return {
type: UPDATE_POST_SUCCESS,
payload: activePost,
};
}
export function updatePostFailure(error) {
return {
type: UPDATE_POST_FAILURE,
payload: error,
};
}
答案 0 :(得分:2)
您mapDispatchToProps
函数的语法似乎不正确。
它必须返回包含方法作为属性的对象。
尝试写出类似的东西:
function mapDispatchToProps(dispatch) {
return {
updatePost() {
return dispatch(updatePost(id, props))
.then(result => {
if (result.payload.response && result.payload.response.status !== 200) {
return dispatch(updatePostFailure(result.payload.response.data));
}
return dispatch(updatePostSuccess(result.payload.data));
});
}
}
}