vue3使用v-model控制子组件进行双向数据绑定

vue2写法:

中父组件调用子组件:

<child :isShow.sync="isShow" v-show="isShow"/>

子组件想要消失, 在子组件写:

this.$emit("update:isShow",false);

具体代码就不粘贴了

vue3写法:

父组件核心代码:

v-model:a="xxx"

子组件核心代码:

defineProps({

a: 数据类型, // 父页面传递的数据

});

interface IEmits {

(e: 'update:a', arg1: 数据类型): void;

}

const emits = defineEmits<IEmits>();

调用父组件的方法:

emits("update:isShow", false);

使用示例:

注意: v-model:isShow="isShow" 如果拆开写就是 @update:isShow="bol=>isShow=bol" :isShow="isShow"

父组件代码如下:

复制代码
<script setup>
import { ref, defineAsyncComponent } from 'vue'

// 异步组件
const ChildA = defineAsyncComponent(() => import('./components/Test.vue'));

const isShow = ref(false);
const show = () => {
  isShow.value = true
}
</script>

<template>
  <input type="button" value="我是父组件中的按钮, 让子组件出现" @click="show">
  <!-- v-model:isShow="isShow"=> @update:isShow="bol=>isShow=bol" :isShow="isShow" -->
  <ChildA v-model:isShow="isShow" />
</template>

<style scoped>
</style>

子组件逻辑:

因为 v-model:isShow="isShow" 如果拆开写就是 @update:isShow="bol=>isShow=bol" :isShow="isShow"

所以:

defineProps({

isShow: Boolean

});

const hide = () => {

emits("update:isShow", false);

}

子组件代码如下:

复制代码
<script setup lang="ts">
// 父组件传数据 v-model:isShow="isShow"
// v-model:isShow="isShow"=> @update:isShow="bol=>isShow=bol" :isShow="isShow"
defineProps({
  isShow: Boolean
});

interface IEmits {
  (e: 'update:isShow', arg1: Boolean): void;
}
const emits = defineEmits<IEmits>();

const hide = () => { // 因为父页面传过来的方法相当于是bol=>isShow=bol, 所以传false就会消失
  emits("update:isShow", false);
}
</script>

<template>
  <div v-show="isShow">
    <button @click="hide">我是子组件,点我消失</button>
  </div>
</template>

<style scoped>
button {
  margin: 10px;
}
</style>
相关推荐
博主花神1 分钟前
【TypeScript】梳理
javascript·ubuntu·typescript
淡笑沐白5 分钟前
ECharts入门指南:数据可视化实战
前端·javascript·echarts
魔卡少女16 分钟前
Nginx配置代码化自动部署詹金斯/Github方案
前端·nginx·github
开发者如是说9 分钟前
可能是最好用的多语言管理工具
android·前端·后端
非科班Java出身GISer11 分钟前
ArcGIS JS 基础教程(1):地图初始化(含AMD/ESM两种引入方式)
javascript·arcgis·arcgis js·arcgis js 初始化·arcgis js 地图初始化
是上好佳佳佳呀11 分钟前
【前端(六)】HTML5 新特性笔记总结
前端·笔记·html5
北城笑笑26 分钟前
FPGA 与 市场主流芯片分类详解:SoC/CPU/GPU/DPU 等芯片核心特性与工程应用
前端·单片机·fpga开发·fpga
A923A1 小时前
【从零开始学 React | 第四章】useEffect和自定义Hook
前端·react.js·fetch·useeffect
ZC跨境爬虫1 小时前
批量爬取小说章节并优化排版(附完整可运行脚本)
前端·爬虫·python·自动化
ZC跨境爬虫1 小时前
海南大学交友平台登录页开发实战day4(解决python传输并读取登录信息的问题)
开发语言·前端·python·flask·html