React Redux执行操作的最佳实践

时间:2018-03-24 16:14:32

标签: reactjs redux redux-thunk

我应该在React(和Redux)中执行操作(重定向或添加/删除localstorage中的内容)?因此,在密码成功更新后,我想将用户重定向到另一个页面。我应该在调度方法之后重定向,我应该在组件中执行还是有其他选项?

示例动作:

export function updateAccountPassword(encryptedPassword) {
    return dispatch => {
        axios.post(API_URL + '/account/recovery/update', {
            _id: getSignedInUserID(),
            password: encryptedPassword
        }).then(() => {
            dispatch(updateUserPasswordSuccess())
        }).catch(() => {
            dispatch(updateUserPasswordFailError());
        })
    }
}

function updateUserPasswordSuccess() {
    return({
        type: RECOVERY_UPDATE_SUCCESS
    })
}

function updateUserPasswordFailError() {
    return({
        type: RECOVERY_UPDATE_FAIL_ERROR,
        payload: 'Something went wrong, please try again'
    })
}

1 个答案:

答案 0 :(得分:1)

我这样做的方法是将this.props.history.push作为回调传递给动作创建者,并按照你的建议,在发送后在动作创建者中调用它。

以下是我的代码中的示例:

在组件表单的提交中,调用操作创建者:

this.props.ACTION_CREATOR(formPayload, () => {
  this.props.history.push(`ROUTING_TARGET`);
});

然后,在动作创建者中,当满足适当的条件时,调用回调(重新路由)。