vue 父组件和子组件中v-model和props的使用和区别

一、v-model

1、v-model 可以在组件上使用以实现双向绑定。即父组件的值可以传递给子组件,子组件的值修改后,父组件的值会同步更新。

Vue 3.4 开始,推荐的实现方式是使用 defineModel() 宏;

2、**示例:**最常用的使用方式:父组件的值,传值给子组件,子组件的input绑定了此字段,这样子组件input的内容修改时,父组件里的值便会同步更新,示例如下

Vue SFC Playground

javascript 复制代码
父组件
<script setup>
import Child from './Child.vue'
import { ref } from 'vue'

const msg = ref('Hello World!')
</script>

<template>
  <h1>{{ msg }}</h1>
  <Child v-model="msg" />
</template>
javascript 复制代码
子组件
<script setup>
const model = defineModel()
</script>

<template>
  <span>My input</span> <input v-model="model">
</template>

3、其他实例:父组件和子组件,弹窗的数据双向绑定

4、延伸:父组件想要传参给子组件多个双向绑定的数据,可以是用v-model的参数(v-model:title)

javascript 复制代码
父组件
<script setup>
import { ref } from 'vue'
import MyComponent from './MyComponent.vue'
  
const bookTitle = ref('v-model argument example')
const content = ref('content')
</script>

<template>
  <h1>{{ bookTitle }}</h1>
  <h1>{{ content }}</h1>
  <MyComponent v-model:title="bookTitle" v-model:content="content" />
</template>
javascript 复制代码
子组件
<script setup>
const title = defineModel('title')
const content = defineModel('content')
</script>

<template>
  <input type="text" v-model="title" />
  <input type="text" v-model="content" />
</template>

二、props属性

props也是父组件的值传递给子组件,但是是单向数据流;子组件的值改变时,父组件的值不会同步更新,需要结合$emit('someEvent')来实现子组件的值同步更新到父组件;

我的理解是v-model的底层机制等同于props和$emit('someEvent')结合使用。

相关推荐
一周七喜h3 分钟前
在Vue3和TypeScripts中使用pinia
前端·javascript·vue.js
weixin_395448919 分钟前
main.c_cursor_0202
前端·网络·算法
摘星编程24 分钟前
用React Native开发OpenHarmony应用:Calendar日期范围选择
javascript·react native·react.js
东东5161 小时前
基于vue的电商购物网站vue +ssm
java·前端·javascript·vue.js·毕业设计·毕设
MediaTea1 小时前
<span class=“js_title_inner“>Python:实例对象</span>
开发语言·前端·javascript·python·ecmascript
雨季6661 小时前
Flutter 三端应用实战:OpenHarmony “微光笔记”——在灵感消逝前,为思想点一盏灯
开发语言·javascript·flutter·ui·dart
编码者卢布1 小时前
【Azure Stream Analytic】用 JavaScript UDF 解决 JSON 字段被转成 Record 的关键点
javascript·json·azure
梦梦代码精1 小时前
开源、免费、可商用:BuildingAI一站式体验报告
开发语言·前端·数据结构·人工智能·后端·开源·知识图谱
松树戈2 小时前
滥用AI生图引起的JavaScript heap out of memory排查记录
vue.js·ai编程
0思必得02 小时前
[Web自动化] Selenium执行JavaScript语句
前端·javascript·爬虫·python·selenium·自动化