首页 > 解决方案 > 如何在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。

标签: javascriptangularspread-syntaxngrx-reducers

解决方案


如果您想完全替换订阅数组,那么您所做的是正确的。但是,如果您只想将 action.payload 中的任何内容添加到订阅数组中,而不是您需要的:

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

推荐阅读