我有一个Object数组,只想concat所有对象的list属性,并创建一个新数组。所以我在下面的代码中有一个“combinedList”getter,如果数组长度大于1,则组合列表,否则只返回第一个项目列表属性。这个返回的数组将在模板文件中使用以显示。如果添加任何新项目,addComment函数将使用新添加的项调用,并将其推送到“combinedList”数组。
这里的问题是,如果objArr长度小于1,newItem将被推送到“combineList”。但是,如果它大于1,newItem不会被推送到“combinedList”数组。
有人能帮我找出这个问题的原因吗?
export default class YourComponent extends Component {
objArr = [ {id:1, list:[1,2,3]}, {id:2, list:[3,4]} ];
get combinedList() {
if (this.objArr.length > 1) {
let list = [];
this.objArr.forEach((item) => {
list.push(...item.list);
});
return list;
}
return this.objArr[0].list;
}
// Call this method when adding a new item
addComment(newItem) {
this.combinedList.unshiftObject(newItem);
}
}
字符串
1条答案
按热度按时间2ekbmq321#
给定此代码:
字符串
有几件事会让你的生活更轻松:
combinedList
时,您都可以获得一个新的list
对象。unshiftObject
不是Array.prototype上的属性--您可能需要unshift
:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshiftthis
(JavaScript无用)解析#2
在它上面添加一个
@cached
,这样每次访问combinedList
时它都是一个稳定的引用:型
解析#3
型
解析#4
型
解析#5
型
这将允许
unshift
更新UI