Как отловить и выбросить ошибку, используя redux-thunk для redux-формы? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь обработать сообщение об ошибке в моем приложении.Я использую Redux-Thunk для асинхронных действий.Это работает довольно хорошо в методе успеха, но мне не удалось поймать и выдать ошибку в мою форму.На самом деле, он отправляет мое собственное действие, которое является loginFailed действием.

formOnSubmitHandler = event => {
        // some codes here...
        const { values } = this.props.form;

        const { from } = this.props.location.state || { from: { pathname: HOME } };
        this.props.userLogin(values, from);

        // some codes here...
    };

вот мой логин пользователя редукция-thunk:

export const userLogin = user => {
    return dispatch => {
        dispatch(loginRequested());
        return identityApi
            .post(AUTH_SIGN_IN, user)
            .then(response => {
                if (response.data.isSuccess) {
                    const {
                        accessToken,
                        refreshToken,
                        expires,
                        email,
                        name,
                        surname,
                        id,
                        phoneNumber,
                        isInformed
                    } = response.data.data;

                    dispatch(
                        loginSucceed({
                            currentUser: {
                                id,
                                name,
                                surname,
                                email,
                                phoneNumber,
                                isInformed
                            }
                        })
                    );
                    dispatch(
                        setToken({
                            accessToken,
                            refreshToken,
                            expires
                        })
                    );
                }
            })
            .catch(err => {
                dispatch(loginFailed(err.response.data.error.message)); // it is working
                throw new SubmissionError({
                    _error: err.response.data.error.message
                });
            });
    };
};
...