Ответ 1
Если вы пытаетесь добавить элемент в конец массива entryName
, который вы должны делать:
return {
...state,
[entryId]: {
...state[entryId],
[entryName]: [
...state[entryId][entryName],
uniqueEntry
]
}
};
Распространение ES6 с массивами работает следующим образом:
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const eight = 8;
const newArray = ['stuff', ...array1, 'things', ...array2, ...[7, eight], 9];
console.log(newArray); // ["stuff", 1, 2, 3, "things", 4, 5, 6, 7, 8, 9]
Отметьте этот смысл, в котором есть пример чего-то очень похожего на то, что вы делаете.
Я нашел этот набор примеров чрезвычайно полезным. Здесь много хорошего:
https://github.com/sebmarkbage/ecmascript-rest-spread
Обновление:
Если entryName
инициализируется на undefined
, как вы говорите в своем комментарии, вы можете сделать это:
return {
...state,
[entryId]: {
...state[entryId],
[entryName]: [
...state[entryId][entryName] || [],
uniqueEntry
]
}
};
Я думаю, что это довольно хороший пример того, насколько болезненно он может работать с React/redux, используя сильно вложенную структуру данных. FWIW, мне было рекомендовано много раз сгладить ваше состояние как можно больше.