Vue 3.0 异步组件
创始人
2025-05-29 02:53:21

#概览

以下是对变化的高层次概述:

  • 新的 defineAsyncComponent 助手方法,用于显式地定义异步组件
  • component 选项重命名为 loader
  • Loader 函数本身不再接收 resolve 和 reject 参数,且必须返回一个 Promise

如需更深入的解释,请继续阅读!

#介绍

以前,异步组件是通过将组件定义为返回 Promise 的函数来创建的,例如:

 
  1. const asyncPage = () => import('./NextPage.vue')

或者,对于带有选项的更高阶的组件语法:

 
  1. const asyncPage = {
  2. component: () => import('./NextPage.vue'),
  3. delay: 200,
  4. timeout: 3000,
  5. error: ErrorComponent,
  6. loading: LoadingComponent
  7. }

#3.x 语法

现在,在 Vue 3 中,由于函数式组件被定义为纯函数,因此异步组件的定义需要通过将其包装在新的 defineAsyncComponent 助手方法中来显式地定义:

 
  1. import { defineAsyncComponent } from 'vue'
  2. import ErrorComponent from './components/ErrorComponent.vue'
  3. import LoadingComponent from './components/LoadingComponent.vue'
  4. // 不带选项的异步组件
  5. const asyncPage = defineAsyncComponent(() => import('./NextPage.vue'))
  6. // 带选项的异步组件
  7. const asyncPageWithOptions = defineAsyncComponent({
  8. loader: () => import('./NextPage.vue'),
  9. delay: 200,
  10. timeout: 3000,
  11. errorComponent: ErrorComponent,
  12. loadingComponent: LoadingComponent
  13. })

对 2.x 所做的另一个更改是,component 选项现在被重命名为 loader,以便准确地传达不能直接提供组件定义的信息。

 
  1. import { defineAsyncComponent } from 'vue'
  2. const asyncPageWithOptions = defineAsyncComponent({
  3. loader: () => import('./NextPage.vue'),
  4. delay: 200,
  5. timeout: 3000,
  6. error: ErrorComponent,
  7. loading: LoadingComponent
  8. })

此外,与 2.x 不同,loader 函数不再接收 resolve 和 reject 参数,且必须始终返回 Promise。

 
  1. // 2.x 版本
  2. const oldAsyncComponent = (resolve, reject) => {
  3. /* ... */
  4. }
  5. // 3.x 版本
  6. const asyncComponent = defineAsyncComponent(
  7. () =>
  8. new Promise((resolve, reject) => {
  9. /* ... */
  10. })
  11. )

有关异步组件用法的详细信息,请参阅:

  • 指南:动态 & 异步组件

相关内容

热门资讯

投资者提问:请问董秘,当前中日... 投资者提问:请问董秘,当前中日关系陷入僵局乃至谷底之际,公司有规划更多使用国产光刻胶等材料来替代日系...
富德生命人寿咸阳中心支公司被罚... 12月16日金融一线消息,据咸阳金融监管分局行政处罚信息公开表显示,富德生命人寿保险股份有限公司咸阳...
市场监管总局:抓紧推进出台《互... 转自:北京日报客户端记者16日从市场监管总局获悉,市场监管总局正抓紧推进《互联网平台反垄断合规指引》...
天奇股份:锂电循环业务夯实产业... 12月16日,江西天奇金泰阁集团(简称“天奇金泰阁”)资本赋能发展大会在江西龙南举行。会上,天奇股份...
「侠客岛」他们用上了“AI分身...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:海外网)来源...