1 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
在 Vue 2 中,只有 Vue 實(shí)例暴露watch. 當(dāng) Vue 3 到來時(shí),您將有其他選擇,但現(xiàn)在您只能使用 Vue 實(shí)例。
也就是說,你可以在插件中有一個(gè)實(shí)例,所以它應(yīng)該很容易實(shí)現(xiàn)你想要的:
import Vue from 'vue';
import SomeObject from './SomeObject';
/**
* Some Cool Plugin...
*/
export default {
install (Vue) {
Vue.prototype.$someObject = Vue.observable(SomeObject);
new Vue({
watch: {
'$someObject.foo' () {
// Do something
}
}
})
}
}
此處創(chuàng)建的 Vue 實(shí)例沒有被渲染。它的存在純粹是為了給我們一種觀看方式$someObject。
我知道你在問題中排除了這一點(diǎn),但我真的不明白為什么。也許您沒有打算創(chuàng)建一個(gè)專門用于觀看的專用 Vue 實(shí)例?
另一種方法是使用屬性設(shè)置器而不是watch. 這個(gè)想法是用來Object.defineProperty為你想要“觀察”的屬性創(chuàng)建一個(gè) setter,然后把你需要的任何副作用放在 setter 中。
添加回答
舉報(bào)