@Deadorik

Почему происходит задержка изменения состояния?

Всем привет. Пишу редюсер для пересчета стоимости товаров в корзине с помощью redux toolkit. Изменение количества работает как надо, а вот когда пытаюсь менять цену, то отрабатывает корректно только 1 клик. Как сделать чтобы редюсер работал правильно? Если писать аналогичную логику через useState, то все работает как надо.

const cartReducer = createSlice({
    name: "cart", initialState: {
        products: []
    }, reducers: {
        addInCart(state, action) {
            state.products.push({...action.payload, count: 1});
        },
        increment(state, action) {
            const item = state.products.find(i => i.id === action.payload.id);
            item.count++;
            item.price = item.price * item.count
        },
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
Alexandroppolus
@Alexandroppolus
кодир
item.price = item.price * item.count


у тебя стоимость растет пропорционально факториалу )) 1 экземпляр стоит 1 рубль, а 4 экземпляра - уже 24 рубля (это если были только +1, а при нажатиях на -1 будет совсем наркомания).

вообще не нужно хранить price в состоянии. Это производный стейт, он вычисляется из другого стейта.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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