【发布时间】:2021-06-05 04:07:00
【问题描述】:
是否有可能使类实例的某些属性具有反应性?
在 MobX 中这很容易做到:
class Doubler {
constructor(value) {
makeObservable(this, {
value: observable,
double: computed,
})
this.value = value
}
get double() {
return this.value * 2
}
}
但在 Vue 中似乎无法做到。
1.我得到的最接近的结果是以下结果:
class Doubler {
constructor(value) {
this.value = ref(value)
this.double = computed(() => this.value.value * 2) // Ugly
}
}
计算出来的代码很丑,而且使用起来也不同:
const doubler = new Doubler(1)
double.value = 2 // No way!
double.value.value = 2 // That's it! Ugly, but that's it.
2.我可以将创建的对象传递给reactive函数,但它会使所有属性反应,并且不影响内部实现,它仍然会很丑。
有没有办法在 Vue 中重现 MobX 方法?
【问题讨论】:
-
你可以将一个反应性的属性传递给你的类的构造函数,比如this
标签: vue.js vuejs3 vue-reactivity