• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Vue 3.0 异步组件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

#概览

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

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

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

#介绍

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

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

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

const asyncPage = {
  component: () => import('./NextPage.vue'),
  delay: 200,
  timeout: 3000,
  error: ErrorComponent,
  loading: LoadingComponent
}

#3.x 语法

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

import { defineAsyncComponent } from 'vue'
import ErrorComponent from './components/ErrorComponent.vue'
import LoadingComponent from './components/LoadingComponent.vue'


// 不带选项的异步组件
const asyncPage = defineAsyncComponent(() => import('./NextPage.vue'))


// 带选项的异步组件
const asyncPageWithOptions = defineAsyncComponent({
  loader: () => import('./NextPage.vue'),
  delay: 200,
  timeout: 3000,
  errorComponent: ErrorComponent,
  loadingComponent: LoadingComponent
})

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

import { defineAsyncComponent } from 'vue'


const asyncPageWithOptions = defineAsyncComponent({
  loader: () => import('./NextPage.vue'),
  delay: 200,
  timeout: 3000,
  error: ErrorComponent,
  loading: LoadingComponent
})

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

// 2.x 版本
const oldAsyncComponent = (resolve, reject) => {
  /* ... */
}


// 3.x 版本
const asyncComponent = defineAsyncComponent(
  () =>
    new Promise((resolve, reject) => {
      /* ... */
    })
)

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

上一篇:
Vue 3.0 attribute强制行为发布时间:2022-01-28
下一篇:
Vue 3.0 v-for中的Ref数组发布时间:2022-01-28
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap