169 похожих чатов

Всем добрый вечер, у меня есть редакс стейт, изначальное состояние

пустой массив далее туда добавляются объекты. В кейсе ADD_ANOTHER я мутирую стейт, и функционал работает. Но как мне сделать то же самое но стейт не мутировать?

https://paste.ofcode.org/4YEh9LmCziYJhnSdbjUZ3

11 ответов

24 просмотра

сделат ькопию стейта сделать действия и добавить новый массив в стейт

Ivan- Автор вопроса
Taras
сделат ькопию стейта сделать действия и добавить...

Так не получиться, мне нужно тогда удалить из изначального стейта объект и только потом добавлять туда новый массив. А удалить я из стейта ничего не могу.

Ivan
Так не получиться, мне нужно тогда удалить из изна...

чтобы не мутировать стейт, придется полностью его заменять новым

Ivan- Автор вопроса
Jakhongir
чтобы не мутировать стейт, придется полностью его ...

А как это правильно сделать то? Не получается.

Ivan
А как это правильно сделать то? Не получается.

не знаю как делают в редаксе, лучше в инете поискать

Наверное как-то так. // Initial state - пустой массив const CartReducer = (state = [], action) => { switch (action.type) { case 'ADD_TO_CART': // Новый массив, старые значения + одно новое return state.concat(action.payload) case 'ADD_ANOTHER': // Новый стейт, старые значения минус одно, одно новое // Чтобы это работало в стейте уже должна быть такая pizza // Зачем нужен ADD_ANOTHER и как ты это контролируешь не спрашиваю return state.map(pizza => { if (pizza.title === action.payload.title) { return { ...pizza, amountOrdered: pizza.amountOrdered + action.payload.amountOrdered } } return pizza }) case 'REMOVE_FROM_CART': // Новый стейт, старые значения минус одно return state.filter((pizza) => pizza.title === action.payload[0].title) default : return state } } Я тебе вчера скидывал доку - почитай её.

Ivan- Автор вопроса
jk
Наверное как-то так. // Initial state - пустой ма...

Ща буду пробовать, перерывчик. ADD_ANOTHER это кнопка плюс на карточке пиццы чтобы заказать несколько таких же пицц.

Ivan- Автор вопроса

Спасибо. Заработало.

Ivan- Автор вопроса
jk
Наверное как-то так. // Initial state - пустой ма...

Использовал иммер как Алексей подсказал. Теперь выглядит вот так: case 'ADD_ANOTHER': const index = state.findIndex((object) => object.title === action.payload.title) return produce(state, (draftState) => { draftState[index].amountOrdered++ });

Ivan
Использовал иммер как Алексей подсказал. Теперь вы...

пустой redux уже мало кто пользует (если начинают новый проект) redux toolkit удобнее

Ivan
Использовал иммер как Алексей подсказал. Теперь вы...

Ну я бы на твоём месте сначала без хелперов потренировался.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта