Javascript 如何仅运行一次vue计算属性?
我有一个填充数组的计算属性,但是我在之后处理这个数组(从&推到它),我希望一旦数组为空,就保持为空(所说的计算属性不会再次填充它)。我该怎么做?我使用computed属性是因为我通过getter从Vuex存储获取数据。 这是有问题的财产:Javascript 如何仅运行一次vue计算属性?,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我有一个填充数组的计算属性,但是我在之后处理这个数组(从&推到它),我希望一旦数组为空,就保持为空(所说的计算属性不会再次填充它)。我该怎么做?我使用computed属性是因为我通过getter从Vuex存储获取数据。 这是有问题的财产: populateAvailableMachines() { Object.values(this.userData).forEach(user => { if (this.$auth.user().id == user.id) {
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));
},
我想要实现的是,一旦将available machines数组中的所有值移动到selected machines数组中,就不要重新运行填充空available machines数组的computed属性。不建议使
computed
属性产生任何副作用,如数据
变异。
最好将
populateAvailableMachines
函数移动到方法并只调用一次(例如,在挂载时)。不建议使计算的属性产生任何副作用,如数据
变异。
最好将populateAvailableMachines
函数移动到方法并只调用一次(例如,在挂载时)。使用watcher
watch: {
userData: {
handler: function (val, oldVal) {
if(this.availableMachines.length > 0){
// put your populate logic here
}
},
deep: true
}
},
此外,您可能需要在创建的或装入的钩子中初始化数据(userData
和availableMachines
)
watch: {
userData: {
handler: function (val, oldVal) {
if(this.availableMachines.length > 0){
// put your populate logic here
}
},
deep: true
}
},
此外,您可能需要在创建的或挂载的钩子中初始化数据(userData
和availableMachines
)!我已经尝试过了,但是当我将computed属性移动到methods时,this.userData
是一个空对象(没有填充我需要的实际值)。为了填充它,我在另一个页面上运行了一个操作。另外,我不认为我产生了任何数据
突变,我只是在我的组件中设置了一个数组作为getter的数据。你可以通过执行这个.availableMachines.push来突变数据。为什么不在将获取结果保存到this.userData
之后立即以方法运行populateAvailableMachines
?您好,先生,谢谢您的反馈!我已经尝试过了,但是当我将computed属性移动到methods时,this.userData
是一个空对象(没有填充我需要的实际值)。为了填充它,我在另一个页面上运行了一个操作。另外,我不认为我产生了任何数据
突变,我只是在我的组件中设置了一个数组作为getter的数据。你可以通过执行这个.availableMachines.push来突变数据。为什么不在将获取结果保存到this.userData
之后立即将populateAvailableMachines
作为一种方法运行呢?