面试题答案
一键面试错误处理方式
- 使用
error
选项:在异步组件定义时,可以使用error
选项指定加载失败时的处理组件。 - 全局错误捕获:利用
Vue.config.errorHandler
全局捕获组件加载过程中的错误。
代码示例
- 使用
error
选项
<template>
<div>
<component :is="asyncComponent"></component>
</div>
</template>
<script>
const asyncComponent = () => ({
component: import('./NonNecessaryComponent.vue'),
loading: () => import('./LoadingComponent.vue'),
error: () => import('./ErrorComponent.vue'),
delay: 200,
timeout: 3000
})
export default {
data() {
return {
asyncComponent
}
}
}
</script>
在上述代码中,asyncComponent
定义了异步组件的加载配置。如果 import('./NonNecessaryComponent.vue')
加载失败,会显示 ErrorComponent.vue
组件。loading
定义了加载过程中显示的组件,delay
表示延迟多久显示加载组件,timeout
表示加载超时时间。
2. 全局错误捕获
Vue.config.errorHandler = function (err, vm, info) {
if (info.includes('async component')) {
// 处理异步组件加载错误
console.error('异步组件加载错误:', err)
// 可以在这里通知用户,例如通过 Vuex 或其他状态管理方式更新错误信息
}
}
在 Vue.config.errorHandler
中,通过判断 info
中是否包含 async component
来确定是否是异步组件加载错误,并进行相应处理。