@danilr

Как правильно возвращать получившийся state в редьюсере?

Не вот такой редьюсер. Два экшент тайпа - инкремент и декремент (просто нужно либо прибавить 1 либо вычесть), какой из них более правильно возвращает новый state? Или если они оба неправильные, то как надо?
И тоже важный вопрос, а как возвращать state для асинхронной функции??) Как с action.type === "ASYNC". Просто в данном варианте работает как-то криво( обновляет не спустя 2 секунды, а при следующем вызове редьюсера только)
export function rootReducer(state, action) {
    if (action.type === 'INCREMENT') {
        const count = ++state.count;
        return {...state, count: count}
    } else if (action.type === 'DECREMENT') {
        state.count--;
        return state;
    } else if (action.type === 'ASYNC') {
        setTimeout(() => {
            debugger;
            const count = ++state.count;
            return {...state, count};
        } ,2000)
    }
    return state;
}
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
@twolegs
Редьюсер должен быть чистой функцией, то есть не содержать в себе сайд-эффектов. В нем не должно быть ничего асинхронного. Для асинхронных операций в redux есть middleware, например redux-thunk.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Aviakassa.ru Севастополь
от 80 000 до 200 000 ₽
Почта Банк Москва
от 200 000 до 235 000 ₽
AGIMA Москва
от 180 000 до 250 000 ₽
02 апр. 2020, в 09:54
1000 руб./за проект
02 апр. 2020, в 09:18
1000 руб./за проект
02 апр. 2020, в 08:52
1200 руб./в час