捕获并处理懒加载失败错误提升用户体验的方法
- 使用
error
选项:在定义异步组件时,可以通过 error
选项指定加载失败时渲染的组件。这样当组件加载失败,会渲染这个指定的错误组件,给用户友好提示。
- 全局处理:通过全局的
Vue.config.errorHandler
捕获异步组件加载失败的错误,在全局统一处理,例如记录日志等,同时可以在组件内部配合 error
选项给用户友好的界面提示。
代码示例
- 定义异步组件并使用
error
选项
<template>
<div>
<component :is="asyncComponent"></component>
</div>
</template>
<script>
// 定义错误组件
const ErrorComponent = {
template: '<div>组件加载失败,请稍后重试!</div>'
};
const asyncComponent = () => ({
// 动态导入组件
component: import('./LazyComponent.vue'),
// 加载中显示的组件
loading: { template: '<div>加载中...</div>' },
// 加载失败显示的组件
error: ErrorComponent,
// 加载超时时间,单位毫秒
timeout: 3000
});
export default {
data() {
return {
asyncComponent
};
}
};
</script>
- 全局处理
// main.js
import Vue from 'vue';
import App from './App.vue';
Vue.config.errorHandler = (err, vm, info) => {
// 这里可以记录错误日志等操作
console.log('捕获到异步组件加载失败错误:', err, '发生在组件:', vm, '错误信息:', info);
};
new Vue({
render: h => h(App)
}).$mount('#app');