Как в javascript обновить внутренний массив объектов с помощью оператора распространения - PullRequest
0 голосов
/ 09 января 2020

У меня есть в моем редукторе для магазина, необходимо обновить значение объекта внутреннего массива:

для:

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
}

Я попробовал оператор распространения, но он просто pu sh мои новые подписки в сайт root, я не знаю, как написать его для обновления объекта SubscriptionI, который является массивом.

1 Ответ

1 голос
/ 09 января 2020

если вы хотите полностью заменить массив подписок, то то, что вы делаете, правильно. Однако если вы просто хотите добавить в массив подписок все, что у вас есть в action.payload, вам нужно:

  const site = {...state.site, subscription**S**: [...state.site.subscription**S**, action.payload]};
...