javascript - 如何在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。
解决方案
如果您想完全替换订阅数组,那么您所做的是正确的。但是,如果您只想将 action.payload 中的任何内容添加到订阅数组中,而不是您需要的:
const site = {...state.site, subscription**S**: [...state.site.subscription**S**, action.payload]};
推荐阅读
- python - 两个代码片段输出之间的区别,Python3
- python - Python 脚本不在 PATH 上
- c++ - 在 QTableView 的单行中添加多行 QString
- javascript - i18n 如何在 javascript 中翻译文本
- vba - VBA - 帮助调试出错的复制/粘贴
- ruby - Different Ways of Namespacing in Ruby
- javascript - 在没有 jquery 的 javascript 中添加和删除类
- html - 如何在标题中移动图像?
- java - 为什么JAVA 10中的var不能初始化为null?
- android - 从 ActivityB 我想将 ID 发送到 FragmentA 并更新 FramgentA 中的列表