当前位置: 首页 > news >正文

Vue 中 this.$emit(‘mount‘) 的妙用

在 Vue 开发中,$emit 常用于父子组件通信,但你是否见过组件内自己触发并监听事件的写法?例如在一个组件的 created 钩子中调用 this.$emit('mount'),然后在 mounted 中通过 this.$on('mount', ...) 监听该事件。这种模式看似奇怪,实则隐藏了异步逻辑的协调智慧。本文将深入剖析这种设计的使用场景、潜在问题与优化方案。

一、代码
以下是一个典型的案例(来自真实代码):

// 1. 在 created 钩子中,异步获取数据后触发 mount 事件
created() {Promise.all([...]).then(res => {this.date = res[0].minDate;this.$emit('mount'); // 数据就绪后触发事件})
}// 2. 在 mounted 钩子中监听 mount 事件
mounted() {this.$on('mount', async () => {// 设置表单默认值、加载列表this.getList();});
}

二、这种模式的核心作用
1. 解决异步依赖问题
在 created 钩子中,组件通过 Promise.all 异步加载数据(如部门列表、部署时间等)。
在 mounted 钩子中,组件的 DOM 已挂载,但需要依赖异步加载的数据来初始化表单或加载表格。
通过 $emit('mount'),确保数据就绪后才执行后续逻辑,避免因数据未加载导致的空值错误。
2. 替代复杂的侦听器(Watch)
如果直接使用 watch 监听多个数据的变化,代码会变得复杂:
JavaScript
 watch: {
 // ... 多个字段需要监听
 }
而通过一个 mount 事件,可以将所有依赖异步数据的初始化逻辑集中处理。


文章转载自:

http://7MeGJERn.pzbjy.cn
http://oa6LBU7b.pzbjy.cn
http://F2jcGG73.pzbjy.cn
http://vepYvnCn.pzbjy.cn
http://kttyCq3i.pzbjy.cn
http://XKNKZ4qb.pzbjy.cn
http://bNFfSSXE.pzbjy.cn
http://1rRUFyXq.pzbjy.cn
http://olJGLq2F.pzbjy.cn
http://nOLfAEDm.pzbjy.cn
http://wuDRRMwL.pzbjy.cn
http://sicOozKj.pzbjy.cn
http://hzeO4RHa.pzbjy.cn
http://sVSwzWF7.pzbjy.cn
http://bBYakcLb.pzbjy.cn
http://KfD3i8qL.pzbjy.cn
http://EsXgr6JQ.pzbjy.cn
http://bQkb7CZd.pzbjy.cn
http://iVja8guN.pzbjy.cn
http://sZ8RwBeC.pzbjy.cn
http://7QON2YQ4.pzbjy.cn
http://lYVYwmSh.pzbjy.cn
http://UXuXoYZU.pzbjy.cn
http://Ds31uEkV.pzbjy.cn
http://Z0z46dxM.pzbjy.cn
http://weBnWFfQ.pzbjy.cn
http://ee9Fe0pj.pzbjy.cn
http://EyjwK53U.pzbjy.cn
http://8SOW3gD5.pzbjy.cn
http://5U3MeQwi.pzbjy.cn
http://www.dtcms.com/a/245578.html

相关文章:

  • [C++][设计模式] : 单例模式(饿汉和懒汉)
  • 2.监控领域中行业黑话知识学习指南
  • 使用Ollama+open-webui搭建本地AI模型
  • 写实交互数字人:赋能消防知识科普,点亮智能交互讲解新未来
  • word表格批量转excel,提取表格数据到excel
  • SpringBoot+Junit在IDEA中实现查询数据库的单元测试
  • ⭐ Unity 实现屏幕涟漪效果:自动生成 \ 点击交互生成涟漪
  • 基于OpenCV和深度学习实现图像风格迁移
  • 分布式光纤测温及红外测温系统的区别?
  • 68、.NET Entity Framework(EF)
  • 每日Prompt:宫崎骏风格插画
  • YOLOv2 技术详解:目标检测的又一次飞跃
  • 大模型Prompt|提示工程的10个常见设计模式
  • 【数据传输常用命令】:docker常用命令
  • 1.ES介绍
  • Three.js搭建小米SU7三维汽车实战(4)场景搭建
  • Eureka 服务注册与发现原理和使用
  • 常见的几种排序算法
  • 预训练CNN网络的迁移学习(MATLAB例)
  • webgl工程发布问题解决记录
  • 【在线五子棋对战】五、前端扫盲:html css javascript ajax jquery websocket
  • LeetCode 3423.循环数组中相邻元素的最大差值:遍历(模拟)
  • 基于GeoTools的道路相交多个点容差冗余计算实战
  • Unity性能优化-C#编码模块
  • 项目名称:基于计算机视觉的夜间目标检测系统
  • 本地内网搭建网址需要外部网络连接怎么办?无公网ip实现https/http站点外网访问
  • 公网 IP 地址SSL证书实现 HTTPS 访问完全指南
  • Ubuntu下使用PyTurboJPEG加速图像编解码
  • 新能源知识库(46)EMS与协控装置
  • Peiiieee的Linux笔记(1)