Как в javascript обновить внутренний массив объектов с помощью оператора распространения
В моем редукторе для магазина нужно обновить значение объекта внутреннего массива:
за:
export interface SiteState {
site: Site;
}
а также
export interface Site {
id: number | null;
uuid: string;
subscriptions?: (SubscriptionI)[] | null;
}
и хотели бы обновить сайт-> подписки [x] = action.payload
// редактируется решением
function handle(state: SiteState, action: Successaction): SiteState {
const sub = state.site.subscriptions.map( subs => {
if (subs.uuid === action.payload.uuid) {
return action.payload
} else {
return subs;
}
});
const site = { site: {...state.site, subscriptions: sub} };
return site
}
Я попробовал оператор распространения, но он просто протолкнул мои новые подписки на корневой сайт, я не знаю, как написать его для обновления объекта SubscriptionI, который представляет собой массив.
1 ответ
Если вы хотите полностью заменить массив подписок, то то, что вы делаете, правильно. Однако, если вы просто хотите добавить все, что у вас есть в action.payload, в массив подписок, чем вам нужно:
const site = {...state.site, subscription**S**: [...state.site.subscription**S**, action.payload]};