当前位置:首页 > VUE

vue click 实现原理

2026-01-19 14:48:56VUE

Vue 中 @click 的实现原理

Vue 的 @click 指令本质上是基于原生 DOM 事件机制的封装,通过 Vue 的模板编译和事件系统实现。以下是其核心实现原理:

模板编译阶段

Vue 模板中的 @click 会被编译为渲染函数中的 on 属性。例如:

vue click 实现原理

<button @click="handleClick">Click</button>

编译后的渲染函数类似:

vue click 实现原理

createElement('button', {
  on: {
    click: handleClick
  }
})

事件绑定阶段

Vue 在虚拟 DOM 渲染为真实 DOM 时,会通过原生 addEventListener 绑定事件。事件处理函数被包裹在 Vue 的内部函数中,确保触发时能正确执行组件实例的对应方法。

事件修饰符处理

Vue 提供了 .stop.prevent 等修饰符,这些修饰符会在编译阶段被解析为对应的原生事件操作:

  • .stop 调用 event.stopPropagation()
  • .prevent 调用 event.preventDefault()
  • .native 绑定到组件根元素的原生事件

自定义事件与原生事件的区别

  • 组件上的 @click 默认是自定义事件,需通过 $emit 触发。
  • 添加 .native 修饰符后,会绑定到组件的根元素的原生 click 事件。

示例代码解析

// 编译后的渲染函数
function render() {
  with(this) {
    return _c('button', {
      on: {
        click: function($event) {
          handleClick($event)
        }
      }
    }, [_v("Click")])
  }
}
  • _c 是 Vue 的 createElement 函数。
  • $event 是 Vue 封装后的事件对象,与原生的 event 对象一致。

标签: 原理vue
分享给朋友:

相关文章

vue实现弹窗

vue实现弹窗

Vue 实现弹窗的常见方法 使用组件化方式封装弹窗 创建一个独立的弹窗组件(如 Modal.vue),通过 v-if 或 v-show 控制显示隐藏: <template> <…

vue实现分类

vue实现分类

Vue实现分类功能的方法 使用v-for和计算属性 通过计算属性对数据进行分类处理,结合v-for渲染分类后的列表。示例代码: <template> <div>…

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue实现driver

vue实现driver

Vue 实现 Driver.js 引导功能 Driver.js 是一个轻量级的 JavaScript 库,用于在网页上创建引导式导览。以下是在 Vue 项目中集成 Driver.js 的详细方法:…

vue实现网站

vue实现网站

Vue 实现网站的基本步骤 Vue.js 是一个渐进式 JavaScript 框架,适合构建现代化的单页应用(SPA)或动态网站。以下是使用 Vue 实现网站的基本方法。 初始化 Vue 项目 使用…