Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我是否可以将Vue.js数据属性与它一起分配给局部变量';谁是二传手?_Javascript_Vue.js - Fatal编程技术网

Javascript 我是否可以将Vue.js数据属性与它一起分配给局部变量';谁是二传手?

Javascript 我是否可以将Vue.js数据属性与它一起分配给局部变量';谁是二传手?,javascript,vue.js,Javascript,Vue.js,请参见以下示例: <template> <div> {{ count }} <button @click="click">Click</button> </div> </template> <script> export default { data() { return { count: 0 } }, methods: { click(

请参见以下示例:

<template>
  <div>
    {{ count }}
    <button @click="click">Click</button>
  </div>
</template>

<script>

export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    click() {
      this.count++
    }
  }
};
</script>

我想先将我的数据属性分配给我的局部变量,然后增加局部变量计数,并希望触发Vue的反应性

我知道Vue使用
对象。defineProperty
的setter to data属性,如何克隆这些setter

有可能这样做吗

更新 我想做的是简化下面的代码

<script lang="ts">
export default {
  data() {
    return {
      isALoading: false,
      isBLoading: false
    };
  },
  methods: {
    hitAPI(type: "A" | "B") {
      if (type === "A") {
        this.isALoading = true;
        fetch(someAPI)
          .then(() => {
            this.isALoading = false;
          })
          .catch(() => {
            this.isALoading = false;
          });
      } else {
        this.isBLoading = true;
        fetch(someAPI)
          .then(() => {
            this.isBLoading = false;
          })
          .catch(() => {
            this.isBLoading = false;
          });
      }
    }
  }
};
</script>


导出默认值{
数据(){
返回{
伊萨:错,
isbloding:false
};
},
方法:{
hitAPI(类型:“A”|“B”){
如果(类型=“A”){
this.isaliding=true;
获取(someAPI)
.然后(()=>{
this.isaliding=false;
})
.catch(()=>{
this.isaliding=false;
});
}否则{
this.isbloding=true;
获取(someAPI)
.然后(()=>{
this.isbloding=false;
})
.catch(()=>{
this.isbloding=false;
});
}
}
}
};
不可能将这样的setter“复制”到局部变量中

您可以使用自己的setter在方法或其他对象后面抽象属性:

点击(){
const self=this
常量包装={
get count(){return self.count},
设置计数(x){self.count=x}
}
包装器。计数++
}
我感觉这是一个XY问题;你为什么要这样做?你想达到什么目标

最好将局部变量重新分配给data属性以触发更新:

点击(){
让count=this.count
//修改局部变量
计数++
//分配回以触发更新
this.count=count
}

更新

您可以通过其字符串名称动态访问该属性:

hitAPI(类型:“A”|“B”){
const prop=type==“A”?“IsLoading”:“IsBloding”
这[道具]=正确
获取(someAPI)。最后(()=>{
这个[道具]=假
})
}
或者使用
异步
/
等待

异步hitAPI(类型:“A”|“B”){ const prop=type==“A”?“IsLoading”:“IsBloding” 这[道具]=正确 试一试{ 等待获取(someAPI) }最后{ 这个[道具]=假 } }