vue3通过v-model实现父子组件通信

单一值传递

父组件

javascript 复制代码
<template>
  <div >
    <h1>v-model实现父子组件通讯</h1>
    <hr>
    <child1 v-model="num"></child1>
    <!-- 上下两个是等价的 -->
    <child1 :modelValue="num" @update:modelValue="handle"></child1>
  </div>
</template>

<script setup>
import {ref} from 'vue'
import child1 from './child1.vue';
let num = ref(0);
const handle =(value)=> {
  num.value = value
}
</script>

子组件

javascript 复制代码
<template>
  <div>
    <h1>我是子组件</h1>
    <!-- 父组件传过来的值 -->
    <h3>{{ modelValue }}</h3>
    <button @click="$emit('update:modelValue', modelValue+1)">修改父组件的值</button>
  </div>
</template>

<script setup>
let props = defineProps(['modelValue'])
const $emit = defineEmits(['update:modelValue'])
</script>

多个v-model实现父子组件传值

父组件

javascript 复制代码
<template>
  <div >
    <h1>v-model实现父子组件通讯</h1>
    <hr>
    <child1 v-model:firstnum="num1" v-model:secondnum="num2"></child1>
  </div>
</template>

<script setup>
import {ref} from 'vue'
import child1 from './child1.vue';
let num1 = ref(0);
let num2 = ref(0);
</script>

<style lang="scss" scoped></style>

子组件

javascript 复制代码
<template>
  <div>
    <h1>我是子组件</h1>
    <!-- 父组件传过来的值1 -->
    <h3>{{ firstnum }}</h3>
    <!-- 父组件传过来的值2 -->
    <h3>{{ secondnum }}</h3>
    <button @click="handler">修改父组件的值</button>
  </div>
</template>

<script setup>
let props = defineProps(['firstnum', 'secondnum'])
const $emit = defineEmits(['update:firstnum', 'update:secondnum'])
const handler = () => {
  $emit('update:firstnum', props.firstnum+1)
  $emit('update:secondnum', props.secondnum+4)
}
</script>
相关推荐
阿蒙Amon3 小时前
TypeScript学习-第7章:泛型(Generic)
javascript·学习·typescript
睡美人的小仙女1273 小时前
Threejs加载环境贴图报错Bad File Format: bad initial token
开发语言·javascript·redis
fanruitian3 小时前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo3 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk3 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
摘星编程4 小时前
React Native + OpenHarmony:Timeline垂直时间轴
javascript·react native·react.js
2501_944525545 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
jin1233225 小时前
React Native鸿蒙跨平台完成剧本杀组队详情页面,可以复用桌游、团建、赛事等各类组队详情页开发
javascript·react native·react.js·ecmascript·harmonyos
李白你好5 小时前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端
经年未远6 小时前
vue3中实现耳机和扬声器切换方案
javascript·学习·vue