Синхронное действие с redux-thunk - PullRequest
0 голосов
/ 05 мая 2020

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

export const checkAuthState = () => {
    return (dispatch) => {
        dispatch(loadingStart());
        const eAuth = localStorage.getItem('eAuth');
        if (!eAuth) {
            dispatch(logout());
        } else {
            const employeeData = JSON.parse(localStorage.getItem('employeeData'));
            dispatch(authSuccess(employeeData, eAuth));
        }
    };
};

Но, поскольку он выполняется асинхронно, состояние eAuth в reducer равно null. Итак, пользователь перенаправляется на страницу входа в систему. Есть ли способ дождаться установки eAuth перед перенаправлением. Я пробовал добавлять состояние loading в true, пока authSuccess не установит его в false, но это тоже не сработало.

1 Ответ

0 голосов
/ 05 мая 2020

надеюсь, это поможет вам спасибо

export const checkAuthState = () => {
    return async (dispatch) => {
        dispatch(loadingStart());
        const eAuth = await localStorage.getItem('eAuth');
        if (!eAuth) {
            dispatch(logout());
        } else {
            const employeeData = await JSON.parse(localStorage.getItem('employeeData'));
            dispatch(authSuccess(employeeData, eAuth));
        }
    };
};
...