开门见山按照惯例,先从上帝的角度看看异步组件发生了什么变化:新增了一个方法:defineAsyncComponent显式定义异步组件组件Option更名:loaderLoader函数不再接受resolve和reject作为参数,必须返回一个Promise,以前是异步组件在Vue2.x中,定义异步组件还是很方便的:constasyncPage=()=>import('./HugePageComponent.vue');如果你需要一些高级用法(我敢打赌你不知道这个用法五十美分):delay:1000,timeout:3000,error:ErrorComponent,loading:LoadingComponent,}即将推出的Vue3异步组件因为Vue3中的函数式组件是由普通函数定义的,所以异步组件需要通过defineAsyncComponent定义显式定义。import{defineAsyncComponent}from'vue';import{ErrorComponent,LoadingComponent}from'xxx';//一般用法constasyncPage=defineAsyncComponent(()=>import('./HugePageComponent'));//高级用法constasyncPageWithOptions=defineAsyncComponent({//这里以前是component,现在叫loaderloader:()=>import('./HugePageComponent'),delay:1000,timeout:3000,errorComponent:ErrorComponent,loadingComponent:LoadingComponent,});另外,和Vue2.x不同的是,loader函数不再提供resolve和reject作为默认参数,必须返回一个Promise://2.xversionconstoldAsyncComponent=(resolve,reject)=>{/*...*/}//3.x版本constnewAsyncComponent=defineAsyncComponent(()=>{returnnewPromise((resolve,reject)=>{/*...*/});});如果想了解更多关于Vue3的异步组件,请移步:https://v3.vuejs.org/guide/migration/async-components.html#_3-x-syntax(暂无中文版)).本文转载自微信公众号“刘凯丽”,可通过以下二维码关注。转载本文请联系刘凯丽公众号。
