【发布时间】:2020-05-12 14:14:51
【问题描述】:
查看Vue.JS' documentation 后,我们提供了一个方法,例如,按所有偶数排序。这一切都很好,但我想按数组内的名称值对数组进行排序 - 这意味着我需要进行比较。我找到的所有答案都已被弃用,唯一的解决方案是使用 VueJS 本身以外的其他模块。这真的不可能,还是我只是错过了一些明显的东西? 这是我的例子:
data() {
return {
namesArray: []
]
};
},
...
computed: {
addToNamesArray(){
this.namesArray.push({"firstName": 'Charles', "lastName": 'Charleston'})
this.namesArray.push({"firstName": 'Albert', "lastName": 'Alberterson'})
this.namesArray.push({"firstName": 'Bertrand', "lastName: ''"})
return this.namesArray
//(Obviously more complicated in reality, but let's keep it simple)
}
}
在 Vue 中:
<ul>
<li v-for="(namesList, index) in addNamesToArray" :key="index">
{{namesList.firstName}}
</li>
</ul>
尝试在计算属性中进行排序会返回“计算属性中的意外副作用”错误,因为无法在计算属性内进行变异。所以我的第二次尝试是制作一个方法:
methods: {
sortNames(){
this.namesArray.sort((a,b) => a.firstName- b.firstName)
}
}
产生新的计算属性:
computed: {
addToNamesArray(){
this.namesArray.push({"firstName": 'Charles', "lastName": 'Charleston'})
this.namesArray.push({"firstName": 'Albert', "lastName": 'Alberterson'})
this.namesArray.push({"firstName": 'Bertrand', "lastName: ''"})
this.sortNames()
return this.namesArray
}
}
但这什么也没做(???)
如果有人能向我解释为什么这些解决方案不起作用并为我提供一个,我将不胜感激
【问题讨论】:
-
正如错误消息所述。你不应该改变数据,即
this.namesArray.push不应该存在。 -
计算属性函数应该计算并返回一个 new 属性。他们不应该修改现有属性,特别是如果该属性是计算的依赖项。