当前位置:首页 > 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 事件。

与 React 受控组件的区别

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

vue受控实现原理

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

相关文章

vue 实现toast

vue 实现toast

vue 实现 toast 的方法 在 Vue 中实现 Toast 提示功能可以通过多种方式,以下是几种常见的实现方法: 使用第三方库 Vue 生态中有许多成熟的 Toast 库,例如 vue-to…

vue 实现豆瓣

vue 实现豆瓣

以下是基于 Vue 实现豆瓣电影类功能的实现方案,涵盖核心模块和技术要点: 数据获取与 API 调用 使用豆瓣开放 API(需注意调用频率限制)或第三方代理接口 推荐 axios 进行异步请求,配合…

vue树形实现

vue树形实现

Vue 树形组件实现方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方法。通过组件调用自身的方式,可以轻松构建多层嵌套的树形结构。 <template> &l…

vue实现效果

vue实现效果

以下是Vue实现常见效果的几种典型方法,分为不同场景说明: 数据绑定与响应式更新 使用v-model实现表单双向绑定: <template> <input v-model…

vue实现$.extend

vue实现$.extend

Vue 实现类似 jQuery 的 $.extend 功能 在 Vue 中实现类似 jQuery 的 $.extend 功能,可以通过多种方式完成。$.extend 主要用于合并多个对象的属性,Vue…

实现简易vue

实现简易vue

实现简易 Vue 的核心思路 Vue 的核心功能包括数据响应式、模板编译和虚拟 DOM。以下是一个简易实现方案,涵盖核心功能模块。 数据响应式系统 通过 Object.defineProperty…