当前位置: 首页 > news >正文

组件之间的双向绑定:v-model

在这里插入图片描述

🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

在Vue中,组件之间的双向绑定通常是通过使用 v-model 指令来实现的。在Vue3中,v-model 的使用方式有所变化,支持更灵活的自定义模型。

父组件向子组件传递数据

父组件可以通过 v-model 将数据传递给子组件,子组件通过 props 接收这些数据。

父组件

<template>
<ChildComponent v-model="parentData" />
</template><script>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';export default {
components: {
ChildComponent
},
setup() {
const parentData = ref('Hello from parent');
return { parentData };
}
};
</script>

子组件

<template>
<input :value="modelValue" @input="$emit('update:modelValue', $event.target.value)">
</template><script>
export default {
props: {
modelValue: String // 注意这里使用的是 'modelValue' 而不是 'value'
},
emits: ['update:modelValue']
};
</script>

子组件向父组件传递数据

子组件可以通过 $emit 方法触发一个事件来更新父组件中的数据。

子组件

<template>
<input :value="modelValue" @input="$emit('update:modelValue', $event.target.value)">
</template><script>
export default {
props: {
modelValue: String
},
emits: ['update:modelValue']
};
</script>

父组件

<template>
<ChildComponent v-model="parentData" />
</template><script>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';export default {
components: {
ChildComponent
},
setup() {
const parentData = ref('Hello from parent');
return { parentData };
}
};
</script>

自定义 v-model 的参数

Vue3 允许自定义 v-model 使用的 prop 和事件名。

父组件

<template>
<CustomInput v-model="customValue" />
</template><script>
import { ref } from 'vue';
import CustomInput from './CustomInput.vue';export default {
components: {
CustomInput
},
setup() {
const customValue = ref('');
return { customValue };
}
};
</script>

子组件

<template>
<input :value="customProp" @input="$emit('customUpdate', $event.target.value)">
</template><script>
export default {
props: {
customProp: String // 自定义 prop 名称
},
emits: ['customUpdate'] // 自定义事件名称
};
</script>

在子组件中,你需要定义 emits 选项来声明自定义事件,并在模板中使用 $emit 来触发这些事件。

注意事项

  • 在Vue3中,v-model 默认使用 modelValue 作为 prop 名称,update:modelValue 作为事件名称。
  • 如果需要自定义 v-model 的 prop 或事件名称,可以在子组件中声明,并在父组件中使用自定义名称。
  • 双向绑定可能会导致数据流难以追踪,应谨慎使用,确保数据流单向化。

总结

v-model 是Vue中实现组件之间双向绑定的指令。在Vue3中,v-model 更加灵活,支持自定义 prop 和事件名称。通过 v-model,可以方便地在父组件和子组件之间同步数据。

http://www.dtcms.com/a/256490.html

相关文章:

  • Happy-LLM-Task04 :2.2 Encoder-Decoder
  • RA4M2开发IOT(0)----安装e² studio
  • 【Docker基础】Docker镜像管理:docker pull详解
  • 【格与代数系统】偏序关系、偏序集与全序集
  • 【软考高级系统架构论文】论企业应用系统的数据持久层架构设计
  • 面试题-函数类型的重载是啥意思
  • Linux——JSON
  • Hightec生成tricore lib及lib的使用方法
  • 自动化立体仓库堆垛机控制系统STEP7 FC3功能块 I/O映射
  • 为车辆提供路径规划解决方案:技术演进、挑战与未来蓝图
  • 数据结构转换与离散点生成
  • c++11标准(5)——并发库(互斥锁)
  • 偏微分方程通解求解2
  • ​《吠檀多不二论的四个基本原理》​(前三部分)
  • 【软考高级系统架构论文】论无服务器架构及其应用
  • 2025年- H83-Lc191--139.单词拆分(动态规划)--Java版
  • Axios 在 Vue3 项目中的使用:从安装到组件中的使用
  • XSS-labs的1-18关
  • 60天python训练营打卡day38
  • 【StarRocks系列】查询优化
  • C 语言结构体:从基础到内存对齐深度解析
  • springboot垃圾分类网站
  • 响应式数据的判断:Vue3中的方法
  • 学c++ cpp 可以投递哪些岗位
  • AI大模型(四)openAI应用实战
  • 大模型在急性弥漫性腹膜炎预测及治疗方案制定中的应用研究
  • rt-thread中使用usb官方自带的驱动问题记录
  • MySQL存储引擎与架构
  • 【Datawhale组队学习202506】零基础学爬虫 02 数据解析与提取
  • 在Docker网络中,同一网络下的容器可以直接通过内部端口通信,无需经过主机端口映射,这是由Docker的网络隔离和内部通信机制决定的。