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

专业做图表的网站网址推荐

专业做图表的网站,网址推荐,wordpress自动添加关键词和描述,贺州做网站哪家公司文章目录 前言🔧 使用方式简述⚙️ 源码角度解析 emit一、组件实例初始化时的 emit二、emit 函数的定义三、关键点说明 🧠 总结流程图(简化)🔍 结合运行时举个实际例子📌 总结 前言 Vue 3 中 emit 是组件之…

文章目录

  • 前言
    • 🔧 使用方式简述
    • ⚙️ 源码角度解析 `emit`
      • 一、组件实例初始化时的 `emit`
      • 二、emit 函数的定义
      • 三、关键点说明
    • 🧠 总结流程图(简化)
    • 🔍 结合运行时举个实际例子
    • 📌 总结


前言

Vue 3 中 emit 是组件之间通信的重要机制,通常用于 子组件向父组件发送事件。下面我们结合源码,深入理解 emit 的工作原理。


🔧 使用方式简述

子组件中:

defineProps(['msg'])
const emit = defineEmits(['change'])function triggerChange() {emit('change', 'new value')
}

父组件中:

<MyComponent @change="onChange" />

⚙️ 源码角度解析 emit

Vue 3 中的 emit 是在 组件实例 (ComponentInternalInstance) 的上下文中定义的函数。它的实现主要在 Vue 3 的核心包 @vue/runtime-core 中。

一、组件实例初始化时的 emit

位于:packages/runtime-core/src/component.ts

export function createComponentInstance(...) {const instance: ComponentInternalInstance = {...emit: (...args) => {emit(instance, ...args)}}...
}

这里 emit 是一个闭包,它绑定了当前组件实例,最终调用了 emit(instance, ...args) 这个方法。


二、emit 函数的定义

位于:packages/runtime-core/src/componentEmits.ts

export function emit(instance: ComponentInternalInstance,event: string,...rawArgs: unknown[]
) {const props = instance.vnode.props || EMPTY_OBJlet handlerName = toHandlerKey(event) // 比如 'change' => 'onChange'let handler = props[handlerName]if (!handler && event.toLowerCase() !== event) {handler = props[handlerName.toLowerCase()]}if (handler) {callWithAsyncErrorHandling(handler, instance, ErrorCodes.COMPONENT_EVENT_HANDLER, args)}
}

三、关键点说明

步骤内容
toHandlerKey('change')会变成 onChange,这是 Vue 事件绑定的内部规则
props.onChange从组件的 vnode.props 上查找对应的事件处理函数
callWithAsyncErrorHandling调用函数时,带有错误处理机制(防止 UI 崩溃)

🧠 总结流程图(简化)

emit('change', value)↓
组件内部的 emit 实例函数↓
调用 @vue/runtime-core 的 emit(instance, 'change', value)↓
查找 props 中的 onChange↓
找到后执行 onChange(value)

🔍 结合运行时举个实际例子

const emit = defineEmits(['submit'])function onClick() {emit('submit', { name: 'Vue' })
}

编译后模板中,父组件绑定的是 onSubmit

<Child @submit="handleSubmit" />

Vue 会在创建 VNode 时把 @submit="handleSubmit" 转成:

props: {onSubmit: handleSubmit
}

然后通过上面提到的 emit 源码逻辑找到 onSubmit 并执行。


📌 总结

  • Vue 3 中的 emit 是通过组件实例绑定的 emit 函数实现的;
  • 实际调用的是 runtime-core 中的 emit(instance, eventName, ...args)
  • emit 会根据事件名(如 change)生成 onChange 并在 props 中查找是否有对应函数;
  • callWithAsyncErrorHandling 确保事件处理函数执行时出错不会影响整个应用。

http://www.dtcms.com/wzjs/249505.html

相关文章:

  • 建设部造价工程师网站最快的新闻发布平台
  • 搬家公司怎么做网站整合营销传播的概念
  • 巫山做网站哪家强seo页面链接优化
  • 网站建设补充如何做一个网站
  • 旅游网站建设方案后台竞价托管sem服务
  • 简单漂亮的logo图片seo搜索推广费用多少
  • 想做网站建设seo网络排名优化
  • 需要做网站设计的公司竞价运营是做什么的
  • 网站空间独立控制面板宁波网站关键词优化代码
  • 阿里云做网站教程在线培训平台有哪些
  • 公司网站有哪些重要性品牌传播策划方案
  • 网站建设加盟哪个好小红书推广运营
  • 东莞做企业网站海外短视频软件
  • 中山企业网站建设方案汕头百度网络推广
  • 网站空间如何使用排名seo公司哪家好
  • 做电脑网站与手机上的一样吗百度自然排名优化
  • 山西网站推广公司网页制作免费网站制作
  • 装潢网站模板seo培训教程视频
  • 南京市秦淮区建设局网站网络推广大概需要多少钱
  • 5款免费网站管理系统杭州seo搜索引擎优化
  • wordpress配置网页出现404错误seo网络优化平台
  • 上海网站制作公司多少钱在线seo关键词排名优化
  • 公司网站首页导航html优化大师电脑版下载
  • ps外包网站国际足联世界排名
  • 一个软件开发团队需要哪些人北京seo专员
  • 临沂做网站优化百度网址大全下载
  • 哈尔滨企业建站服务商济南seo排名优化推广
  • 建设网站q8555 3807360优化大师下载
  • 建设电影网站如何赚钱seo网站排名查询
  • 牡丹江3d网站开发汕头seo全网营销