我有一个运行 Typescript 3.6.3 的 Vue 2.6.10 应用程序。
我声明了一个 Typescript 类,它为应用程序执行一些标准功能。我有一个插件将该类的实例分配给 Vue 的原型。
该实例化类的任何公共成员都不是反应式的,无论其类型如何。
我提炼了这个例子https://codepen.io/ColdToast/pen/KKwwjwY
班级
class Module {
public _person = null;
constructor() {}
get person() {
return this._person;
}
set person(val) {
this._person = val;
}
fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => resolve('Person data'), 1000);
});
}
}
插件和应用
const MyPlugin = {
install(Vue) {
Object.defineProperties(Vue.prototype, {
$module: { value: new Module() }
});
}
};
const App = {
name: 'App',
template: `<p>Hello {{ name }}</p>`,
computed: {
// Expect to resolve to 'Person data'
name() {
return this.$module.person;
}
},
async created() {
// I expect `data` to be 'Person data'
const data = await this.$module.fetchData();
// Properly logs 'Person data'
console.log(data);
this.$module.person = data;
}
};