Невозможно вызвать функцию действия от создателя действия - PullRequest
0 голосов
/ 21 января 2019

К сожалению, я не могу вызвать handleApiErrors из блока catch error.Функция не вызывается, строка кода handleApiErrors (ошибка, «Данные не могут быть получены») игнорируется)

Кажется, что двойное использование dispatch вызывает проблему, но в соответствии с thunk документами это должноработа

const getInitialData = () => (dispatch) => {
    getBookList()
        .then((books) => {
            dispatch(fetchBooksSuccess(books));
        })
        .catch((error) => {
            handleApiErrors(error, 'Data could not be retrieved') 
        });
    };


const handleApiErrors = (error, userMessage = '') => (dispatch) => {
    const { response, message } = error;
    let errorMessage = '';
    switch (response.status) {
        case 401:
            errorMessage = 'You are not authenticated';
            break;
        case 403:
            errorMessage = 'You are not authorized to access this ressource';
            break;
        case 500:
            errorMessage = `${userMessage} There was an internal error, please try again`;
            break;
        case 503:
            errorMessage = `${userMessage} The network connection is unavailable at the moment`;
            break;
        default:
            errorMessage = message;
     }
     dispatch(setApiErrors(errorMessage));
};

1 Ответ

0 голосов
/ 21 января 2019

Действия должны быть простыми возвращаемыми функциями.

dispatch(handleApiErrors(error, 'Data could not be retrieved'));


const handleApiErrors = (error, userMessage = '') => {
const { response, message } = error;
let errorMessage = '';
switch (response.status) {
    case 401:
        errorMessage = 'You are not authenticated';
        break;
    case 403:
        errorMessage = 'You are not authorized to access this ressource';
        break;
    case 500:
        errorMessage = `${userMessage} There was an internal error, please try again`;
        break;
    case 503:
        errorMessage = `${userMessage} The network connection is unavailable at the moment`;
        break;
    default:
        errorMessage = message;
 }
 setApiErrors(errorMessage);
};
...