位置: IT常识 - 正文

vu3中的父子组件通讯(vue3父子组件通信)

编辑:rootadmin
一、传统的props 通过在父组件中给子组件传值,然后在子组件中通过props接受数据 1 //父组件 2 <ValidateInput 3 type="text" 4 v-model="emailVal" 5 :rules='emailRules' 6 placeholder='请输入邮箱地址' ...

推荐整理分享vu3中的父子组件通讯(vue3父子组件通信),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:父子组件v-model,vue父子组件v-model,父子组件v-model,vue父子组件是什么,vue父子组件是什么,vue父子组件mounted顺序原因,父子组件v-model,vue3父子组件,内容如对您有帮助,希望把文章链接给更多的朋友!

一、传统的props

通过在父组件中给子组件传值,然后在子组件中通过props接受数据

1 //父组件 2 <ValidateInput 3 type="text" 4 v-model="emailVal" 5 :rules='emailRules' 6 placeholder='请输入邮箱地址' 7 ref="inputRef" 8 > 9 </ValidateInput>10 11 //子组件12 export default defineComponent({13 name: 'ValidateInput',14 props: {15 rules: Array as PropType <RulesProp>,16 modelValue: String17 },18 }

二、通过modeValue绑定

//v-model简写<ValidateInput type="text" v-model="emailVal" placeholder='请输入邮箱地址' ref="inputRef" ></ValidateInput>//实际上是<ValidateInput type="text" :emailVal="emailVal" @update:modelValue="方法" placeholder='请输入邮箱地址' ref="inputRef" ></ValidateInput>//子组件<template> <div class="inputItem"> <input type="text" :value="inputRef.val" @input="updateValue" id="emial" > </div></template>export default defineComponent({ name: 'ValidateInput', props: { rules: Array as PropType <RulesProp>, modelValue: String }, setup (props, context) { const inputRef = reactive({ val: props.modelValue || '', isError: false, message: '' }) const updateValue = (e:KeyboardEvent) => { const targetValue = (e.target as HTMLInputElement).value inputRef.val = targetValue context.emit('update:modelValue', targetValue) } return { inputRef, updateValue } }vu3中的父子组件通讯(vue3父子组件通信)

三、事件广播(vue3中$on和$emit已废弃),使用新的插件mitt

Vue3.0版本中把on,off、onece等事件函数移除了,emit()用于父子组件之间的沟通。

为了能够使用事务总线,除了emit触发函数还得有on监听函数。官方推荐使用第三方库mitt

因此事务总线的使用应该为

首先安装第三方库mitt

npm install --save mitt

然后在程序中使用事件总线:

1 //父组件接受'form-item-created'频道 2 <script lang="ts"> 3 import { defineComponent, onUnmounted } from 'vue' 4 import mitt from 'mitt' 5 export const emitter = mitt() 6 export default defineComponent({ 7 name: 'ValidateForm', 8 setup () { 9 const callback = (test: string) => {10 console.log(test)11 }12 emitter.on('form-item-created', callback)13 onUnmounted(() => {14 emitter.off('form-item-created', callback)15 })16 return {}17 }18 })19 </script>20 21 //子组件发送信息22 onMounted(() => {23 console.log(inputRef.val)24 emitter.emit('form-item-created', inputRef.val)25 })
本文链接地址:https://www.jiuchutong.com/zhishi/310310.html 转载请保留说明!

上一篇:Java集合框架之List(java集合框架主要有)

下一篇:js如何自定义构造函数创建对象(js 自定义类型)

  • 淘宝新手卖家必须做到的“五要”(淘宝新手卖家必须开店吗)

  • 花呗如何关闭(花呗如何关闭信用购)

  • 幻灯片模板设置怎么设置(幻灯片模板设置会影响幻灯片母版的内容)

  • 华为p40屏幕是什么材质(华为P40屏幕是什么排列)

  • 手机咪咕音乐均衡器在哪(手机咪咕音乐均衡器下载)

  • 声卡驱动安装完没声音(声卡驱动安装完没有图标)

  • 苹果11闪光灯感叹号(苹果闪光灯感觉松动)

  • qq头像同步到空间怎么关掉(qq空间头像怎么同步qq头像)

  • 快手搬运别人作品后果(快手搬运别人作品违规吗)

  • 笔记本闪屏怎么回事(笔记本闪屏怎么强制关机)

  • oppor9plus有没有语音助手(oppor9plus有没有nfc功能)

  • 抖音如何引流(抖音如何引流客源最快的方法)

  • 阿里巴巴国际站年费多少(阿里巴巴国际站怎么运营)

  • 用户注销qq空间什么意思(用户注销qq空间后别人访问提示已注销还能看到访客吗)

  • 内存卡class10是什么意思(内存卡 class)

  • ipad2为什么不能下载(ipad2为什么不能下载微信)

  • 迅雷快鸟是干什么用的(迅雷 迅雷快鸟)

  • 苹果手机16g变32g方法(苹果内存16g升32g要多少钱)

  • 希尔薇屏幕怎么缩小小米

  • 限制群搜索是封群吗(限制群搜索是封号吗)

  • 第一PPT模板网说明、介绍等(第一ppt模板下载免费版)

  • oppok3什么时候发售(oppok3什么时候发布)

  • 怎么激活airpods(怎么激活airpods pro序列号)

  • ps如何创建自定义形状图层(ps如何创建自定义画布)

  • 5g手机和4g手机区别(5g手机和4g手机有什么区别)

  • Linux系统中vmstat的基本使用指南(linux系统中文输入法切换不出来)

  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设 电脑维修 湖南楚通运网络