Поведение диспетчерской функции в блоке catch - PullRequest
0 голосов
/ 25 октября 2018

Я строил систему входа в свое приложение и обнаружил странное поведение функции отправки.

Я использую React с Redux, Redux-Thunk и Redux-Form.В моем файле actions / index.js после выполнения запроса axios функция отправки, когда я использую синтаксис .then (). Catch (), работает отлично, но когда я перехожу на асинхронный / ожидающий синтаксис, вторая отправка не 'больше не работает.Я пытаюсь найти объяснение в Интернете, но я не нашел ничего, что прояснило бы мою проблему.Кто-нибудь знает, почему это происходит?

Версия, которая отлично работает:

export const submitLoginForm = values => dispatch => {
axios.post(
        '/auth/local/login',
        qs.stringify({
            email: values.email,
            password: values.password
        })
    )
    .then(res => {
        dispatch({ type: FETCH_USER, payload: res.data });
    })
    .catch(err => {
        dispatch(
            stopSubmit('enterpriseLogin', {
                _error: 'Error description...'
            })
        );
    });
}

Версия, в которой вторая отправка не работает:

export const submitLoginForm = values => async dispatch => {
try {
    const res = await axios.post(
        '/auth/local/login',
        qs.stringify({
            email: values.email,
            password: values.password
        })
    );
    dispatch({ type: FETCH_USER, payload: res.data });
} catch (err) {
    //Doesnt Work !!
    dispatch(
        stopSubmit('enterpriseLogin', {
            _error: 'Error description...'
        })
    );
}
}
...