网易首页 > 网易号 > 正文 申请入驻

重新“定义”Vue 3的异步组件

0
分享至

作者:kyrieliu来源:劉凯里

开门见山

依照惯例,首先从上帝视角看一下异步组件发生了什么改变:

  • 新增了一个方法:defineAsyncComponent,用来显式地定义异步组件
  • component 选项改名:loader
  • Loader 函数不再接受 resolve 和 reject 作为参数,并且必须返回一个 Promise

曾经的异步组件

在 Vue 2.x 中,定义一个异步组件还是很方便的:

const asyncPage = () => import('./HugePageComponent.vue');

如果需要一些高级的用法(我赌五毛钱你不知道这个用法):

import { ErrorComponent, LoadingComponent } from 'xxx';
const asyncPage = {
component: () => import('./HugePageComponent'),
delay: 1000,
timeout: 3000,
error: ErrorComponent,
loading: LoadingComponent,

即将到来的 Vue 3 异步组件

因为在 Vue 3 中函数式组件均有普通函数来定义,所以异步组件需要通过 defineAsyncComponent 来进行显式地定义。

import { defineAsyncComponent } from 'vue';
import { ErrorComponent, LoadingComponent } from 'xxx';
// 常规用法
const asyncPage = defineAsyncComponent(() => import('./HugePageComponent'));
// 高级用法
const asyncPageWithOptions = defineAsyncComponent({
// 这里之前是 component,现在改叫 loader 了
loader: () => import('./HugePageComponent'),
delay: 1000,
timeout: 3000,
errorComponent: ErrorComponent,
loadingComponent: LoadingComponent,

另外,和 Vue 2.x 不同的是,loader 函数不再提供 resolve 和 reject 作为默认参数了,而且必须返回一个 Promise:

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

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



如果想更深了解 Vue 3 的异步组件,请移步:https://v3.vuejs.org/guide/migration/async-components.html#_3-x-syntax(目前还没有中文版)。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
三星再传涨价!A股存储龙头股高位跳水

三星再传涨价!A股存储龙头股高位跳水

第一财经资讯
2026-07-05 17:07:54
许家印算个屁,北京首富才是真首富!没人不服!

许家印算个屁,北京首富才是真首富!没人不服!

遁走的两轮
2026-07-05 08:45:23
A股:全体股民做好心理准备了,明天7.6,A股或将又一次历史重演!

A股:全体股民做好心理准备了,明天7.6,A股或将又一次历史重演!

趋势清风侠
2026-07-05 11:18:19
刚刚 | 四川绵竹4.5级地震!多地震感强烈

刚刚 | 四川绵竹4.5级地震!多地震感强烈

天津广播
2026-07-05 23:25:22
国内将逐渐停止“肠镜检查”?做完对身体有无影响?医生告诉真相

国内将逐渐停止“肠镜检查”?做完对身体有无影响?医生告诉真相

健康科普365
2026-06-13 15:51:24
你们有何颜面作出好的示范?

你们有何颜面作出好的示范?

胖胖说他不胖
2026-07-04 10:00:12
本届世界杯,最倒霉的就是佛得角!踢了4场球,遇到3个世界冠军

本届世界杯,最倒霉的就是佛得角!踢了4场球,遇到3个世界冠军

观星娱记
2026-07-05 12:31:18
世界杯:网红赠墨西哥全队百万劳力士名表 足协表示到手即还

世界杯:网红赠墨西哥全队百万劳力士名表 足协表示到手即还

环球趣闻分享
2026-07-05 15:57:12
过分!巴拉圭门将拿球砸姆巴佩 竟当选MVP 网友:应该让马宁执法

过分!巴拉圭门将拿球砸姆巴佩 竟当选MVP 网友:应该让马宁执法

念洲
2026-07-05 08:45:03
中超:成都1-1海牛!3轮不败+14分领跑,杨明洋、杨聪破门

中超:成都1-1海牛!3轮不败+14分领跑,杨明洋、杨聪破门

乒烧泳球
2026-07-05 21:03:17
终于弄明白为啥开空调蚊子就不咬了:不是蚊子被冻着了,也不是蚊子不想咬,而是蚊子的“导航系统”失灵了!

终于弄明白为啥开空调蚊子就不咬了:不是蚊子被冻着了,也不是蚊子不想咬,而是蚊子的“导航系统”失灵了!

犀利辣椒
2026-07-05 06:20:51
明天世界杯两场淘汰赛预测:巴西险胜挪威,英格兰或爆大冷出局

明天世界杯两场淘汰赛预测:巴西险胜挪威,英格兰或爆大冷出局

刘哥谈体育
2026-07-05 13:45:13
别硬扛高温!1.5匹空调开24小时,电费真相让你大跌眼镜

别硬扛高温!1.5匹空调开24小时,电费真相让你大跌眼镜

小兔子发现大事情
2026-07-04 16:22:21
迪丽热巴深V开到腰了登上热搜,网友直呼:辛德瑞拉公主

迪丽热巴深V开到腰了登上热搜,网友直呼:辛德瑞拉公主

韩小娱
2026-07-05 19:56:37
随着篠塚大登1-4,WTT美国大满贯男单4强出炉:无中国和韩国选手

随着篠塚大登1-4,WTT美国大满贯男单4强出炉:无中国和韩国选手

侧身凌空斩
2026-07-05 12:46:21
网上卖的很火,实则都是智商税的“家居废物”!希望你没买过

网上卖的很火,实则都是智商税的“家居废物”!希望你没买过

甜茶极简记
2026-07-04 13:08:12
Here we go!罗马诺:克洛普将出任德国队主帅

Here we go!罗马诺:克洛普将出任德国队主帅

懂球帝
2026-07-05 18:45:01
大满贯捷报:国乒抗日成功夺冠!王艺迪剃光头,赛后发言笑爆全场

大满贯捷报:国乒抗日成功夺冠!王艺迪剃光头,赛后发言笑爆全场

桃叶渡春
2026-07-05 10:49:20
巴拉圭盘外招惹众怒,他们本可以昂着头离开

巴拉圭盘外招惹众怒,他们本可以昂着头离开

澎湃新闻
2026-07-05 13:12:27
CCTV5直播葡萄牙VS西班牙,开球时间确定,C罗和亚马尔谁能进8强

CCTV5直播葡萄牙VS西班牙,开球时间确定,C罗和亚马尔谁能进8强

体育大学僧
2026-07-05 12:14:04
2026-07-05 23:43:00
Nodejs开发
Nodejs开发
分享只有程序员懂的干货
648文章数 823关注度
往期回顾 全部

科技要闻

华为:逻辑折叠将大幅提升麒麟CPU核心频率

头条要闻

医院给老人一次拔12颗牙种10颗 官方:将顶格行政处罚

头条要闻

医院给老人一次拔12颗牙种10颗 官方:将顶格行政处罚

体育要闻

姆巴佩点走巴拉圭:巴黎三代左锋传承

娱乐要闻

霉霉婚礼照片泄露 有四人违规

财经要闻

揭秘跨境“对敲”换汇黑产

汽车要闻

方程豹钛9内饰曝光 用上了长联屏设计/下半年上市

态度原创

家居
房产
亲子
健康
教育

家居要闻

传奇筑 日常诗

房产要闻

总裁空缺17个月、现金缺口超1000亿:金融局“局外人”入局万科

亲子要闻

工程车爱游泳

听说少吃点能抗衰老?专家讲解!

教育要闻

河南男孩693分放弃清华强基:这笔账,985算不过农村孩子

无障碍浏览 进入关怀版