Вы возвращаете тот же самый массив cards (и тот же самый элемент cards, и то же самое свойство entries обновляемого элемента cards), что и был, поэтому изменений как бы и не было. Делайте копии:
const addEntry = (state, action) => {
const cards = [...state.cards];
const index = cards.findIndex(n => n.id === action.id);
const card = {...cards[index]};
card.entries = [ ...card.entries, { id: Math.random().toString(36).substring(7) } ];
cards[index] = card;
return { cards };
};
Кстати, я правильно понимаю, что
const addEntry = (state, action) => {
- это не весь редьюсер, а эта функция вызывается внутри редьюсера?
Как-то так, да?