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)
}最后{
这个[道具]=假
}
}