gpt4 book ai didi

typescript - 使用 Typescript 类时的 Vue react 性

转载 作者:行者123 更新时间:2023-12-05 07:16:38 29 4
gpt4 key购买 nike

我有一个运行 Typescript 3.6.3 的 Vue 2.6.10 应用程序。

我声明了一个 Typescript 类,它为应用程序执行一些标准功能。我有一个插件可以将该类的实例分配给 Vue 的原型(prototype)。

无论其类型如何,该实例化类的公共(public)成员都不是响应式的。

我提炼了这个例子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;
}
};

最佳答案

如果您将类的实例传递给 Vuedata,那么一切都会按预期进行。它并不理想,但有以下作用:

const App = {
name: 'App',

template: `<p>Hello {{ name }}</p>`,

computed: {
// Expect to resolve to 'Person data'
name() {
return this.$module.person;
}
},

data() {
return {
module: this.$module
};
},

async created() {
const data = await this.$module.fetchData();

this.$module.person = data;
}
};

关于typescript - 使用 Typescript 类时的 Vue react 性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59181847/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com