@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;
}
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
@twolegs
Редьюсер должен быть чистой функцией, то есть не содержать в себе сайд-эффектов. В нем не должно быть ничего асинхронного. Для асинхронных операций в redux есть middleware, например redux-thunk.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы