当前位置:首页 > VUE

vue受控实现原理

2026-01-18 20:00:28VUE

Vue 受控组件的实现原理

Vue 中的受控组件通常指表单元素(如 inputselect 等)的值由 Vue 的数据状态(datav-model)驱动,而非由 DOM 自身管理。其核心是通过数据绑定和事件监听实现双向同步。

数据绑定与响应式

Vue 通过 v-model:value + @input 实现受控:

  • v-model 是语法糖,本质上是 :value 绑定和 @input 事件的组合。
  • 表单元素的值由 Vue 的响应式数据(如 data 中的属性)控制,数据变化时自动更新 DOM。
<template>
  <input v-model="message" />
</template>

<script>
export default {
  data() {
    return {
      message: ''
    }
  }
}
</script>

事件监听与更新

当用户输入时,Vue 通过事件监听(如 inputchange)捕获变化,并同步到数据状态:

  • v-model 默认监听 input 事件(文本类元素)或 change 事件(复选框等)。
  • 手动实现时需显式绑定 :value@input
<template>
  <input :value="message" @input="handleInput" />
</template>

<script>
export default {
  data() {
    return {
      message: ''
    }
  },
  methods: {
    handleInput(e) {
      this.message = e.target.value;
    }
  }
}
</script>

自定义组件中的受控

对于自定义组件,需通过 model 选项和 $emit 实现受控:

  • 使用 model 定义 propevent,替代默认的 valueinput
  • 子组件内部通过 $emit 触发事件,父组件更新数据。
<!-- 父组件 -->
<template>
  <CustomInput v-model="message" />
</template>

<!-- 子组件 -->
<template>
  <input :value="value" @input="$emit('input', $event.target.value)" />
</template>

<script>
export default {
  props: ['value'],
  model: {
    prop: 'value',
    event: 'input'
  }
}
</script>

与 React 受控组件的区别

  • Vue 的 v-model 简化了双向绑定,React 需手动实现 onChangevalue
  • Vue 的响应式系统自动处理依赖追踪,React 需通过 setState 显式更新。

通过上述机制,Vue 实现了数据与视图的自动同步,确保表单元素始终受控于数据状态。

vue受控实现原理

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

相关文章

vue实现聊天

vue实现聊天

Vue实现聊天功能 基础项目结构搭建 使用Vue CLI或Vite创建项目,安装必要依赖如socket.io-client或axios(根据通信方式选择)。核心组件通常包括: ChatWindow.…

vue实现选区创建

vue实现选区创建

Vue 实现选区创建的方法 在 Vue 中实现选区创建通常涉及 DOM 操作和事件处理。以下是几种常见的方法: 使用原生 DOM API 通过 window.getSelection() 和 Ra…

vue播放倍速怎么实现

vue播放倍速怎么实现

实现Vue播放倍速的方法 在Vue中实现播放倍速功能通常涉及HTML5的<video>元素或第三方播放器库。以下是几种常见实现方式: 使用原生HTML5 video元素 通过ref获取…

vue懒加载实现难吗

vue懒加载实现难吗

vue懒加载的实现难度 Vue懒加载的实现并不复杂,核心逻辑是通过动态导入(Dynamic Imports)和路由配置或组件异步加载完成。以下是具体实现方法: 路由懒加载实现 在Vue Rout…

vue实现a4打印模板

vue实现a4打印模板

使用Vue实现A4打印模板 在Vue中实现A4打印模板需要结合CSS的打印样式和Vue的模板渲染能力。以下是具体实现方法: 设置A4纸张尺寸 在CSS中定义A4纸张的标准尺寸(210mm × 29…

eventbus vue实现

eventbus vue实现

EventBus 实现原理 EventBus 是一种发布/订阅模式,用于 Vue 组件间的通信。核心是通过一个中央事件总线管理事件监听和触发。 创建 EventBus 在 Vue 项目中创建一个独立…