vue3:24—组件通信方式

1、props 

子组件也可以如下调用父组件的方法

 

2、自定义事件 (emit)

3、mitt(任意组件的通讯)

1.  pubsub

2.  $bus
3.  mitt

  • 接收数据的:提前绑定好事件(提前订阅消息)
  • 提供数据的:在合适的时候触发事件发布消息)

安装mitt

npm i mitt -S

 utils/emitter.ts

import mitt from 'mitt'

//调用mitt得到emitter,emitter能绑事件、触发事件
const emitter = mitt()

/**
 * 
 * //绑定事件
emitter.on('test1',()=>{
    console.log('被调用')
})
//触发事件
setTimeout(()=>{
    emitter.emit('test1')
},1000)

setTimeout(()=>{
    emitter.off('test1')
    emitter.all.clear()//全部解绑
},3000)
 */

export default emitter

子组件中单独引入使用。【另一种方法时:添加到全局变量中,也是可以的,这里只单独引入了一下】 

4、v-model【封装ui组件库用的多,平时用的少。和vue2有点不同】

父组件

<!-- eslint-disable vue/no-parsing-error -->
<!--
  功能:功能描述
  时间:2024年02月06日 21:49:29
  修改时间:
-->
<script setup lang="ts">
import { ref } from 'vue'
import myInput from './myInput.vue'

let vv = ref('hello')
</script>

<template>
  <div>
    <!-- <input type="text" v-model="vv"> -->
    <!-- (<HTMLInputElement>$event.target).value -->
    <!-- <input type="text" :value="vv" @input="vv=$event.target.value"> -->

    <!-- 这段代码的本质就是下面那行被注释掉的内容 -->
    <myInput v-model="vv"></myInput>
    <!-- <myInput :modelValue="vv" @update:modelValue="vv = $event"></myInput> -->

  </div>
</template>

<style scoped></style>

子组件:myInput.vue

<!--
  功能:功能描述
  时间:2024年02月06日 21:49:41
  修改时间:
-->
<script setup lang='ts'>
import {ref} from 'vue'
defineProps(["modelValue"])
const emit = defineEmits(["update:modelValue"])
</script>

<template>
  <input 
    type="text" 
    :value="modelValue"
    @input="emit('update:modelValue',(<HTMLInputElement>$event.target).value)"
  >
</template>

<style scoped>
input{
  border:1px solid #ddd;
  height:30px;
  font-size:20px;
}
</style>

 vue内置的属性是modelValue,不想用这个属性,怎么办? v-model:自己想要的属性名  

如下:

这意味着我们可以在组件标签上多次使用v-model 

$event到底是啥?啥时候能.target

  • 对于原生事件,$event就是事件对象 =====>能.target
  • 对于自定义事件,$event就是触发事件时,所传递的数据==>不能.target

相关推荐

  1. Vue组件通信方式

    2024-02-07 05:32:02       20 阅读
  2. vue组件通信方式介绍

    2024-02-07 05:32:02       51 阅读
  3. vue中不同组件通信方式

    2024-02-07 05:32:02       54 阅读
  4. Vue2组件通信方式

    2024-02-07 05:32:02       39 阅读
  5. Vue3组件之间通信方式

    2024-02-07 05:32:02       48 阅读
  6. vue 组件组件通信方法

    2024-02-07 05:32:02       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-07 05:32:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-07 05:32:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-07 05:32:02       82 阅读
  4. Python语言-面向对象

    2024-02-07 05:32:02       91 阅读

热门阅读

  1. BC107 矩阵转置

    2024-02-07 05:32:02       46 阅读
  2. linux系统lvs命令的使用

    2024-02-07 05:32:02       53 阅读
  3. k8s filebeat 应用日志搜集

    2024-02-07 05:32:02       57 阅读
  4. 学习总结13

    2024-02-07 05:32:02       42 阅读
  5. 9、nfs-subdir-external-provisioner

    2024-02-07 05:32:02       57 阅读
  6. ChatGPT高效提问—基础知识(LM、PLM以及LLM)

    2024-02-07 05:32:02       91 阅读
  7. sql——如果查到的值为空,则显示给出的默认值

    2024-02-07 05:32:02       50 阅读
  8. centos ssh 默认端口 修改

    2024-02-07 05:32:02       57 阅读
  9. vue2编写一个自定义指令,一键绑定事件委托

    2024-02-07 05:32:02       57 阅读
  10. web读取前端txt并解析

    2024-02-07 05:32:02       54 阅读
  11. 比值计算 - 荣耀机试真题题解 ( 第1题 100 分)

    2024-02-07 05:32:02       42 阅读
  12. 天翼云CentOS7多IPsk5服务器一键搭建脚本

    2024-02-07 05:32:02       52 阅读
  13. 【Iceberg学习一】什么是Iceberg?

    2024-02-07 05:32:02       44 阅读
  14. linux驱动开发之常见面试问题

    2024-02-07 05:32:02       51 阅读