В моем приложении есть страница сведений с комментариями под продуктом. Пользователь может отреагировать на комментарий смайликом. В настоящее время мой магазин Redux выглядит так:
Details: {
ratings: [ {} ],
comments: [
{
id: 1,
comment: 'text',
reactions: [{
id: 1,
emoji: ':)',
userId: 2
}, {...}]
}, {...} ]
}
Когда пользователь выбирает смайлик для реакции на комментарий, я отправляю действие в BE, реакция сохраняется, отвечает FE объектом newReaction. Я хочу добавить объект newReaction в массив реакций выше для указанного c commentId. Ниже представлена сокращенная версия моего редуктора:
const initialState = {};
export default (state = initialState, action) => {
switch (action.type) {
case BOOK_DETAILS_SUCCESS:
return { ...action.payload };
case REACTION_POST_SUCCESS:
return {
...state,
comments: [...state.comments, action.payload],
};
default:
return state;
}
};
Я не могу понять, как настроить таргетинг на указанный объект c commentId в массиве комментариев. А затем добавьте к нему объект newReaction.