1
头图

概述

最近在开发vue3.x的项目中,配置好路由之后点击跳转页面就出现以下报错:

Uncaught (in promise) TypeError: Cannot read property '__asyncLoader' of undefined

网上也没有找到问题的处理方法,话不多说,直接上处理方法:
image.png

辅助函数defineAsyncComponent

Vue 3.x 中,对异步组件的使用跟 Vue 2.x 不同了。变化主要有三点:

  • 异步组件声明方法的改变:Vue 3.x 新增一个辅助函数defineAsyncComponent,用来显示声明异步组件;
  • 异步组件高级声明方法中的 component 选项更名为loader;
  • loader绑定的组件加载函数不再接收resolve和reject参数,而且必须返回一个Promise;

vue3项目中引入组件的写法如下:

import { defineAsyncComponent } from 'vue' // 引入defineAsyncComponent

components: {
    child: defineAsyncComponent(_ => import('xxx.vue'))
},

注意:

defineAsyncComponent只适用于vue3的异步组件,对于路由懒加载是无效的。路由懒加载的方法和vue2.x一样。

希望能帮到遇到同样问题的你!

官方文档:https://v3.cn.vuejs.org/guide...


咿藍真伱
65 声望5 粉丝

生活没有苟且,只有努力