我有一个相当重的组件,我想异步加载它,同时在加载时向用户显示加载微调器。
这是我的第一次尝试,使用loading
defined indata
链接到带有v-if="loading"
. 不幸的是,这不起作用,因为 Vue 似乎没有this
为内部函数正确重新绑定components
-
export default {
data: {
return {
loading: false,
};
},
components: {
// ...
ExampleComponent: (resolve) => {
// Doesn't work - 'this' is undefined here
this.loading = true;
require(['./ExampleComponent'], (component) => {
this.loading = false;
resolve(component);
});
},
},
};
我还找到了一些 Vue 1.0 示例,但它们依赖于$refs
- 在 2.0$refs
中不再是响应式的,并且不能用于此目的。剩下的唯一方法是让子组件本身在其挂载生命周期事件上对应用程序数据状态执行某些操作以删除加载微调器,但这似乎有点繁重。有一个更好的方法吗?