Vue.js 是否可以创建一个可以直接更改其值的计算 属性 ?
Is it possible with Vue.js to create a computed property whose value can be changed directly?
我的计算 属性 在最初安装组件时从存储操作(其中包含 axios 调用)接收信息。但是我需要稍后直接更改它的值:
myComputedProperty: {
get: function () {
return this.myStoreActionResult;
},
set: function (newValue) {
return newValue
}
}
然而,使用此设置,我无法更改其值:
console.log(this.myComputedProperty)
this.myComputedProperty = 'new value!'
console.log(this.myComputedProperty)
我希望它显示初始值(基于商店信息),然后显示新值。相反,它显示初始值的两倍:我不能直接更改计算的 属性 的值。
有没有办法做到这一点,如果有的话,怎么做?
是的,这是可能的。
请参阅此处的 Vue.js 文档:Computed Setter
你的代码会变成这样:
myComputedProperty: {
get: function () {
return this.myStoreActionResult;
},
set: function (newValue) {
this.myStoreActionResult = newVaue;
}
}
计算属性用于返回计算(和缓存)的值,因此您不能直接设置它的值,因为它根本不存在。在计算的 属性 后面是您可以使用 setter 设置的变量,就像在您的示例中一样。您只需要设置引用变量的新值:
myComputedProperty: {
get: function () {
return this.myStoreActionResult;
},
set: function (newValue) {
this.myStoreActionResult = newValue;
return newValue
}
}
像上面的例子那样使用计算变量是没有用的,因为你间接修改了原来的属性.
我的计算 属性 在最初安装组件时从存储操作(其中包含 axios 调用)接收信息。但是我需要稍后直接更改它的值:
myComputedProperty: {
get: function () {
return this.myStoreActionResult;
},
set: function (newValue) {
return newValue
}
}
然而,使用此设置,我无法更改其值:
console.log(this.myComputedProperty)
this.myComputedProperty = 'new value!'
console.log(this.myComputedProperty)
我希望它显示初始值(基于商店信息),然后显示新值。相反,它显示初始值的两倍:我不能直接更改计算的 属性 的值。
有没有办法做到这一点,如果有的话,怎么做?
是的,这是可能的。
请参阅此处的 Vue.js 文档:Computed Setter
你的代码会变成这样:
myComputedProperty: {
get: function () {
return this.myStoreActionResult;
},
set: function (newValue) {
this.myStoreActionResult = newVaue;
}
}
计算属性用于返回计算(和缓存)的值,因此您不能直接设置它的值,因为它根本不存在。在计算的 属性 后面是您可以使用 setter 设置的变量,就像在您的示例中一样。您只需要设置引用变量的新值:
myComputedProperty: {
get: function () {
return this.myStoreActionResult;
},
set: function (newValue) {
this.myStoreActionResult = newValue;
return newValue
}
}
像上面的例子那样使用计算变量是没有用的,因为你间接修改了原来的属性.