[英]How to run a vue computed property only once?
我有一个填充数组的计算属性,但是后来我正在使用该数组(从&推入),并且我希望一旦数组为空,就保持为空(所说的计算属性不要再次填充它)。我能做到吗? 我使用的是计算属性,因为我是通过getter从Vuex存储中获取数据的。 这是有问题的财产:
populateAvailableMachines() {
Object.values(this.userData).forEach(user => {
if (this.$auth.user().id == user.id) {
if (this.availableMachines.length == 0) {
Object.keys(user.machine).forEach(key => {
this.availableMachines.push(user.machine[key].machine_name);
});
}
}
});
},
这是推送/拼接的方法:
addMachineTab(item) {
let index = this.availableMachines.indexOf(item);
this.selectedMachines.push(this.availableMachines.splice(index, 1));
},
我要实现的是,一旦将所有可用机器数组中的值都移到选定的机器数组中,就不要重新运行填充空的可用机器数组的计算属性。
不建议使computed
属性产生任何副作用,例如data
变异。 最好将populateAvailableMachines
函数移至方法并仅调用一次(例如,在安装时)。
请改用观察者。
watch: {
userData: {
handler: function (val, oldVal) {
if(this.availableMachines.length > 0){
// put your populate logic here
}
},
deep: true
}
},
此外,您可能需要在created
或mounted
挂钩中初始化数据( userData
和availableMachines
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.