芜湖做网站多少钱,免费s站推广网站,徐州做网站那家好,山东省建设厅网站地址Vue中事件的绑定分为两种情况#xff1a;原生DOM事件和组件事件。
原生DOM事件
是指在模板中使用v-on或指令来给元素绑定的事件#xff0c;如
button clickhandlerclick me/button这种事件的绑定是通过以下步骤实现的#xff1a;
模板编译阶…Vue中事件的绑定分为两种情况原生DOM事件和组件事件。
原生DOM事件
是指在模板中使用v-on或指令来给元素绑定的事件如
button clickhandlerclick me/button这种事件的绑定是通过以下步骤实现的
模板编译阶段Vue会解析v-on/指令生成相应的AST节点其中包含事件名和事件处理函数的信息。生成render函数阶段Vue会根据AST节点生成v-on/指令对应的代码如on: {click: handler}并将其作为VNode的属性。创建真实DOM节点阶段Vue会调用createElm函数其中会调用invokeCreateHooks函数遍历执行平台相关的钩子函数其中就有updateDOMListeners函数该函数负责比较新旧VNode的事件监听器添加或移除相应的事件绑定使用原生的addEventListener和removeEventListener方法。
组件事件
是指在组件中使用$emit方法来触发的事件如this.\$emit(submit, payload)。
这种事件的绑定是通过以下步骤实现的
在组件的选项中可以通过emits属性或defineEmits函数来声明要触发的事件这样可以在代码中作为文档记录组件的用法也可以对事件的参数进行类型校验提高代码的可维护性和健壮性。在组件的模板中可以使用v-on或指令来监听组件事件如 MyComponent submitcallback /这样会将事件监听器作为VNode的属性传递给组件。在组件的实例中可以使用$emit方法来触发组件事件如this.\$emit(submit, payload)。这个方法会在当前组件实例上触发一个自定义事件同时传递给它一些参数。在组件的渲染过程中Vue会调用updateComponentListeners函数该函数会遍历组件VNode的事件监听器将其添加到组件实例的_events属性中该属性是一个事件名和事件处理函数的映射表。在组件的$emit方法中Vue会根据事件名在_events属性中查找对应的事件处理函数如果存在则依次执行它们并传递事件参数。