У меня есть редуктор, который получает действие с полезной нагрузкой, которую мне нужно обновить. Проблема в том, что данные, которые мне нужно обновить в состоянии, - это вложенные данные. Я добавил свой редуктор ниже с некоторым комментарием и тем, что я пытался сделать до сих пор.Обновление вложенного состояния редукции
export default function(state=data, action){
switch (action.type) {
case 'UPDATE_CONTACT_INFO':
let appointment = state[action.appointmentIndex]; // This is the appointment that needs to be updated
appointment.notification.contactInfo = action.payload; // this is the data that needs to be updated with the payload. I tried updating it like this but then not sure how to add it to the state.
return state; // Somehow need to update the state with the new state
break;
default:
return state;
}
}
Ниже представлена моя первоначальная структура данных, которую я передаю в редуктор в качестве состояния по умолчанию.
data = [
{
date: 'Friday, January 6',
time: '4:00 PM-5:00 PM',
notification:
{
contactInfo: [
{
displayMethod:"Phone Call",
method:"Phone",
value:"3473686552"
},
{
displayMethod:"Email",
method:"Email",
value:"[email protected]"
}
]
}
},
{
date: 'Saturday, January 7',
time: '2:00 PM-6:00 PM',
notification:
{
contactInfo: [
{
displayMethod:"Phone Call",
method:"Phone",
value:"2123686552"
},
{
displayMethod:"Email",
method:"Email",
value:"[email protected]"
}
]
}
}
];
Действие. Загрузить в данных редуктора та же структура, что и массив contactInfo в одном из назначений. [Object, Object]
Ничего себе это работает, но его запутывает, как это работает.Я читал документы, но до сих пор не понимаю, что делает эта часть. {[action.appointmentIndex]: {уведомление: {contactInfo: {$ set: action.payload}}}} –
[action.appointmentIndex] - это просто номер, и как он может узнать, какой объект в массиве получить на основе что у вас есть выше –
Как это работает, вы можете отметить его тик (это будет мой первый, вы знаете). И как это работает? Hm, для меня API ясен - когда ваше состояние является массивом, вы можете попасть в один из его элементов, объявив его индекс в массиве как соглашение. Да, это число, но этого достаточно - индекс массива - это число, это понятно. –