当前位置:首页 > VUE

vue受控实现原理

2026-02-19 12:23:48VUE

Vue 受控组件的实现原理

Vue 中的受控组件通常指表单元素(如 input、select 等)的值由 Vue 的数据状态(如 v-model 绑定的数据)控制,而非由 DOM 自身管理。其核心原理基于双向数据绑定和事件监听。

数据绑定与更新

通过 v-model 指令,Vue 将表单元素的值与组件的数据属性动态绑定。例如:

<input v-model="message">

等价于:

<input :value="message" @input="message = $event.target.value">
  • :value="message" 将数据 message 绑定到输入框的 value 属性,实现数据到视图的同步。
  • @input="message = $event.target.value" 监听输入事件,将用户输入的值更新到数据 message,实现视图到数据的同步。

底层机制

  1. 响应式系统
    Vue 通过 Object.defineProperty 或 Proxy 监听数据属性的变化。当 message 被修改时,触发依赖更新,重新渲染相关 DOM。

  2. 事件监听
    表单元素触发 inputchange 事件时,Vue 捕获事件并更新对应的数据属性,从而触发响应式系统的重新渲染。

  3. 修饰符支持
    v-model 支持修饰符(如 .lazy.number.trim),通过调整事件监听逻辑或值处理方式实现特定功能。例如:

    • .lazyinput 事件改为 change 事件,延迟更新。
    • .number 将输入值转为数字类型。

自定义受控组件

对于自定义组件,v-model 默认绑定 value 属性和 input 事件。可通过 model 选项修改绑定属性和事件名:

export default {
  model: {
    prop: 'checked',
    event: 'change'
  },
  props: ['checked']
}

此时 v-model 会绑定 checked 属性和 change 事件。

vue受控实现原理

与 React 受控组件的区别

  • Vue:通过 v-model 自动处理双向绑定,开发者无需手动实现事件处理和数据更新。
  • React:需显式定义 valueonChange,手动更新状态。

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

相关文章

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…

vue实现portal

vue实现portal

Vue 实现 Portal 功能 Portal 是一种将子节点渲染到父组件 DOM 层级之外的 DOM 节点的技术,常用于实现模态框、弹出层等需要脱离当前组件层级的场景。Vue 可以通过多种方式实现…

vue实现Siri

vue实现Siri

Vue 实现 Siri 风格语音交互 实现类似 Siri 的语音交互功能需要结合语音识别、语音合成和前端交互逻辑。Vue 作为前端框架,可以很好地管理这些功能的交互状态。 语音识别集成 使用 Web…

vue实现心电图

vue实现心电图

Vue 实现心电图效果 在 Vue 中实现心电图效果通常需要结合 Canvas 或 SVG 进行动态绘图,模拟心电图数据的实时变化。以下是两种实现方式的核心思路和代码示例: 使用 Canvas 绘制…

vue实现hovuer

vue实现hovuer

Vue 实现 Hover 效果 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 直接控制 通过 :hover 伪类实现,无需额外的 JavaScrip…

vue指令实现

vue指令实现

Vue 指令的实现方式 Vue 指令是特殊的标记,用于在 DOM 元素上应用特定的行为。可以通过全局或局部方式注册自定义指令。 全局注册指令 在 Vue 应用中通过 Vue.directive 方法…