vue异步组件使用及监听组件挂载状态
对有加载状态的异步组件的封装
/**
* 处理路由页面切换时,异步组件加载过渡的处理函数
* @param {Object} AsyncView 需要加载的组件,如 import('@/components/home/Home.vue')
*/
// 使用方式 const helloWorld = () => lazyLoadView(import('@/components/helloWorld'))
export const lazyLoadView = (AsyncView) => {
return () => ({
// 需要加载的组件 (应该是一个 `Promise` 对象)
component: AsyncView,
// 异步组件加载时使用的组件
// loading: require('@/components/public/RouteLoading.vue').default,
loading: { template: '<div>loading...</div>'},
// 加载失败时使用的组件
// error: require('@/components/public/RouteError.vue').default,
error: { template: '<div>error...</div>'},
// 展示加载时组件的延时时间。默认值是 200 (毫秒)
delay: 200,
// 如果提供了超时时间且组件加载也超时了,
// 则使用加载失败时使用的组件。默认值是:`Infinity`
timeout: 10000
});
}
使用
![](https://img2020.cnblogs.com/blog/1472677/202112/1472677-20211201150647227-1077111464.png)
使用@hook生命周期钩子函数监听组件挂载状态
也可以自定义@mounted方法,自组建通过this.$emit触发