Я пытаюсь создать приложение поиска рейсов в React/Redux, где на главном экране будут показаны все мои результаты полета, а на боковой панели - различные фильтры, отображаются флажки. (В качестве примера см this exampleОбновление глубокого вложенного состояния (нормализованного) в реакции redux
Фильтры сгруппированы по типам, например, станции отправления, прибытия станций, вылет раза и т.д. Все Фильтроэлементы созданные в одном нормализованного вложенной состоянии, в котором каждый элемент имеет следующие свойства:
"type": "airlines", // this is the group type
"checked": true, // will be switched true or false
"label": "Brittish Airways" // this is the display label
Когда я нажимаю один из флажков в моем React мнению, следующие действия будут уволены:
export function filterFlightOffers(item, index) {
return {
type: 'FILTER_FLIGHT_OFFERS',
grouptype,
id
}
}
Я хотел бы мой Redux редуктора для обновления состояния (переключатель проверяется значение) и вернуть новое состояние (например, i mmutable). Рассматривая примеры онлайн, я реагирую на такие решения, как копирование нового состояния с помощью оператора с расширением, например. ... состояние и обновление специфицированного элемента с включенным отмеченным элементом, например. {[action.id]: checked,! checked}.
Но я просто не могу заставить его работать, я думаю, из-за того, что у меня есть глубокое вложенное состояние. Поэтому я удалил сложность действия и редуктора и сделал простой jsfiddle, который должен просто console.log новый неизменный «изменено» состояние.
Есть ли кто-нибудь, кто мог бы мне помочь?
http://jsfiddle.net/gzco1yp7/4/
Спасибо!
Почему вы вложенные '... state [action.id]' inside' state [action.id] '? Было бы немного легче помочь, если бы вы могли объяснить, что находится на вашем действии и что вы пытаетесь с этим сделать. Например, возможно, вы пытаетесь обновить упражнение 'action.id' с помощью' action.exercise'. То, что у вас здесь, и состояние, которое у вас есть на вашей скрипке, вообще не выстраивается. – ajmajmajma
О, мне очень жаль. Код, отображаемый в приложении, не имеет ничего общего с моим реальным кодом. Это была просто копия онлайн-примера, чтобы показать принцип. Код, над которым я работаю, находится в скрипке. Для облегчения работы я удалил все действие. Только ищет решение для копирования исходного состояния и обновления определенного глубокого элемента в нем ... Я соответственно обновлю свой первоначальный вопрос. – user3611459
Не беспокойтесь, между этими двумя примерами нет четкой картины того, что вы пытаетесь сделать. Если вы можете четко описать *, что * вы пытаетесь изменить в состоянии и как (как в том, что вы передаете в своих действиях вашим редукторам), я могу показать вам, как это сделать с неизменяемым ... – ajmajmajma