【发布时间】:2019-09-02 17:10:59
【问题描述】:
想知道我是否应该使用方法直接更新data() 中可能较大的数组,或者让该方法在data() 中设置另一个原始属性并使用computed 来使用该方法返回更改后的数组?以下两种方法的示例:
方法一:
data() {
return {
users: [
{
name: 'alice'
selected: true
},
name: 'bob'
selected: false
// ...
methods: {
handleSelection(selectedIndex) {
this.users = this.users.map((item, index) => {
item.selected = selectedIndex === index ? true : false;
return item;
});
}
方法 #2:
data() {
return {
selectedIndex: 0,
users: [
{
name: 'alice'
selected: true
},
name: 'bob'
selected: false
// ...
computed: {
usersSelected() {
return this.users.map((item, index) => {
item.selected = this.selectedIndex === index ? true : false;
return item;
});
}
//...
methods: {
handleSelection(selectedIndex) {
this.selectedIndex = selectedIndex;
}
其中一个比另一个更好还是有任何其他建议/改进?谢谢!
【问题讨论】:
-
根据您的代码,一次只能有 1 个选定用户,但我看到
usersSelected()其中“用户”是复数,它与您的代码相矛盾。哪一个是正确的? -
计算属性通常是正确的方法,因为您无需担心手动重新计算值。
-
@YongQuan -
usersSelected()是一个糟糕的名称选择,但我不能称它为users(),因为这将与 Vue 中data()中的users命名冲突。也许应该叫它usersComputed()。 -
那么整个集合中只有一个
selected: true的用户是真的吗? -
@YongQuan - 是的,但那个细节与我无关 - 只是想知道使用计算是否更好。
标签: vue.js