iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Vue3常用的通讯方式有哪些
  • 251
分享到

Vue3常用的通讯方式有哪些

2023-06-30 17:06:46 251人浏览 八月长安
摘要

这篇文章主要讲解了“vue3常用的通讯方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3常用的通讯方式有哪些”吧!props父组件    

这篇文章主要讲解了“vue3常用的通讯方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3常用的通讯方式有哪些”吧!

props

父组件

    <template>      <div>          <Child :msg="msg" :obj="obj" />      </div>    </template>    <script setup>        import { ref, Reactive } from 'vue'        // Vue3.2版本setup语法糖引入组件不需要注册便可以使用组件        import Child from './child.vue'        const msg = ref('一只豆豆')        // 传递复杂类型数据        const obj = reactive({name: '豆豆'})    </script>

子组件

    <template>      <div></div>    </template>    <script setup>        // Vue3.2版本setup语法糖 defineProps 不需要引入可以直接使用        const props = defineProps({            msg: {                type: String,                default: ''            },            obj: {                type: Object,                default: () => {}            }        })        console.log('msg', props.msg); // 一只豆豆        console.log('obj', props.obj.name); // 豆豆</script>

$emit

父组件

    <template>      <div>          <Child @myClick="myClick" />      </div>    </template>    <script setup>        import { ref, reactive } from 'vue'        import Child from './child.vue'        const myClick = val => {            console.log('val', val); // emit传递信息        }</script>

子组件

    <template>      <div>          <button @click="handleClick">click me</button>      </div>    </template>    <script setup>        // Vue3.2版本setup语法糖 defineEmits 不需要引入可以直接使用        const emit = defineEmits(['myClick']) // 如果有多个emit事件可以往数组后边添加即可                const handleClick = ()=>{            emit("myClick", "emit传递信息")        }    </script>

EventBus

在Vue3中就没有EventBus了,可以使用mitt.js来替代
安装

$ npm install --save mitt

bus.js

    import mitt from 'mitt'    export default mitt()

兄弟组件A emit触发

    <template>      <div>        <button @click="handleClick">click me</button>      </div>    </template>    <script setup>        import bus from './bus'        const handleClick = () => {          bus.emit('foo', '豆豆')        }    </script>

兄弟组件B on接收

    <template>      <div></div>    </template>    <script setup>        import bus from './bus'        bus.on('foo', e => {          console.log('e', e) // '豆豆'        })    </script>

v-model

Vue2版本是可以通过修饰符.sync让子组件修改父组件的值,但是Vue3就取消这个修饰符,融合到v-model里边去了

父组件

    <template>      <div>        <div>{{ name }}</div>        <div>{{ age }}</div>        <Child v-model:name="name" v-model:age="age" />      </div>    </template>    <script setup>        import Child from './child.vue'        import { ref } from 'vue'        const name = ref('豆豆')        const age = ref(20)    </script>

子组件

    <template>      <div>        <div></div>        <button @click="handleChange">click me</button>      </div>    </template>    <script setup>        // 'update:name' 这样写在console里面就不会有告警了        const emit = defineEmits(['update:name', 'update:age'])        const handleChange = () => {          emit('update:name', '一只豆豆')          emit('update:age', 18)        }    </script>

expose / ref

子组件通过 expose 暴露属性和方法出去
父组件通过 ref 来获取子组件的值和调用方法

父组件

    <template>      <div>        <Child ref="myRef" />        <button @click="handleClick">click me</button>      </div>    </template>    <script setup>        import Child from './child.vue'        import { ref } from 'vue'        const myRef = ref(null)        const handleClick = () => {          console.log('myRef', myRef.value.name) // 豆豆          myRef.value.fn() // 一只豆豆        }    </script>

子组件

    <template>      <div>        <div></div>      </div>    </template>    <script setup>        // Vue3.2版本setup语法糖 defineExpose 不需要引入可以直接使用        defineExpose({          name: '豆豆',          fn () {            console.log('一只豆豆')          }        })    </script>

provide / inject

provide / inject 可以给后代组件传参,嵌套多少层都没问题

父组件

    <template>      <div>        <Child />      </div>    </template>    <script setup>        import Child from './child.vue'        import { ref, provide } from 'vue'        const name = ref('豆豆')        provide('name', name)    </script>

后代组件

    <template>      <div>        <div>后代组件name {{ name }}</div>      </div>    </template>    <script setup>        import { inject } from 'vue'        const name = inject('name')        console.log('name', name.value) // 豆豆    </script>

Vue2使用 provide / inject 传递数据不是响应式的,所以只能通过传递一个对象数据才能变成响应式
Vue3使用 provide / inject传递数据就是响应式了,这就很便捷

插槽 slot

普通插槽

父组件

    <template>      <div>        <Child>豆豆</Child>      </div>    </template>    <script setup>        import Child from './child.vue'    </script>

子组件

    <template>      <div>        <slot></slot>      </div>    </template>    <script setup></script>

具名插槽

    <template>      <div>        <Child>          豆豆          <template #name>            <div>              <button>一只豆豆</button>            </div>          </template>        </Child>      </div>    </template>    <script setup>        import Child from './child.vue'    </script>

子组件

    <template>      <div>        // 普通插槽        <slot></slot>        // 具名插槽        <slot name="name"></slot>      </div>    </template>    <script setup></script>

效果图

Vue3常用的通讯方式有哪些

作用域插槽

父组件

    <template>      <!-- v-slot="{scope}" 子组件返回的每一项数据 -->      <Child v-slot="{ scope }" :arr="arr">        <div class="box">          <div>名字:{{ scope.name }}</div>          <div>年龄:{{ scope.age }}</div>          <div>爱好:{{ scope.like }}</div>        </div>      </Child>    </template>    <script setup>        import { reactive } from 'vue'        import Child from './child.vue'        const arr = reactive([          { name: '张三', age: 18, like: '篮球' },          { name: '李四', age: 19, like: '排球' },          { name: '王五', age: 20, like: '足球' }        ])    </script>    <style lang="less">        .box {          display: inline-block;          width: 200px;          border: dashed blue 1px;          margin-right: 15px;          padding: 10px;        }    </style>

子组件

    <template>      <div>        <!-- :scope="item" 返回每一项 -->        <slot v-for="item in arr" :scope="item" />      </div>    </template>    <script setup>        const props = defineProps({          arr: {            type: Array,            default: () => []          }        })    </script>

效果图

Vue3常用的通讯方式有哪些

感谢各位的阅读,以上就是“Vue3常用的通讯方式有哪些”的内容了,经过本文的学习后,相信大家对Vue3常用的通讯方式有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Vue3常用的通讯方式有哪些

本文链接: https://www.lsjlt.com/news/330400.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue3常用的通讯方式有哪些
    这篇文章主要讲解了“Vue3常用的通讯方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3常用的通讯方式有哪些”吧!props父组件    ...
    99+
    2023-06-30
  • Vue3中组件通讯的方法有哪些
    这篇文章主要讲解了“Vue3中组件通讯的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3中组件通讯的方法有哪些”吧!Props父组件传值给子组件(简称:父传子)Props 文...
    99+
    2023-07-02
  • Vue3的组件通信方式有哪些
    本篇内容主要讲解“Vue3的组件通信方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue3的组件通信方式有哪些”吧!Props父组件传值给子组件(简称:父传子)Props 文档父组件/...
    99+
    2023-06-29
  • java通讯方式有哪些
    java的通讯方式有:1.RMI,可以在客户端中调用java虚拟机对象;2.Burlap,基于XML格式传输;3.JMS,java消息服务应用程序接口;4.AMQP,提供统一消息服务的应用层消息队列协议;java的通讯方式有以下几种RMIR...
    99+
    2024-04-02
  • 进程通讯的方式有哪些
    本篇内容主要讲解“进程通讯的方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“进程通讯的方式有哪些”吧!进程同步和通信主要是使用QProcess和QSharedMemory,QSystem...
    99+
    2023-06-19
  • Vue3常用的通讯方式总结与实例代码
    目录前言props$emitEventBusv-modelexpose / refprovide / inject插槽 slot普通插槽具名插槽作用域插槽结语前言 Vue3更新了很久...
    99+
    2024-04-02
  • Vue2和Vue3中常用组件通信方法有哪些
    本篇内容介绍了“Vue2和Vue3中常用组件通信方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Vue3 组件通信方式props$e...
    99+
    2023-07-05
  • Vue常用的组件通信方式有哪些
    本篇文章和大家了解一下Vue常用的组件通信方式有哪些。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。组建通信的基本模式:父子组件的关系可以总结为 prop 向下传递,事件向上传递。父组件通过 prop 给子组件下发数据,子...
    99+
    2023-06-14
  • Vue组件间的通讯方式有哪些
    本篇内容主要讲解“Vue组件间的通讯方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue组件间的通讯方式有哪些”吧!前言Vue 提供了各种各样的通讯,其中包括兄弟间的通讯和非兄弟间的通...
    99+
    2023-06-27
  • Vue3父子通讯方式及Vue3插槽的使用方法详解
    在Vue3中父子通讯方式 Vue3父传子(props) 父组件如下: <template> <div class="about"> <h1&...
    99+
    2023-01-28
    Vue3父子通讯方式 Vue3插槽的使用 Vue3组件父传子 Vue3组件子传父 Vue3组件通讯
  • Vue3父子通讯方式及Vue3插槽的使用方法是什么
    这篇文章主要介绍了Vue3父子通讯方式及Vue3插槽的使用方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue3父子通讯方式及Vue3插槽的使用方法是什么文章都会有所收获,下面我们一起来看看吧。Vue...
    99+
    2023-07-05
  • 常用的加密方式有哪些
    一、密钥散列 采用MD5或者SHA1等散列算法,对明文进行加密。严格来说,MD5不算一种加密算法,而是一种摘要算法。无论多长的输入,MD5都会输出一个128位(16字节)的散列值。而SHA1也是流行的消息摘要算法,它可以生成一个被称为消息摘...
    99+
    2023-09-25
    网络 java 服务器
  • DOS下测试通讯的常用命令有哪些
    这篇文章主要介绍DOS下测试通讯的常用命令有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!DOS下测试通讯的常用命令 dir>prn命令 dir>prn 或 dir>lpt1是在DOS下测试通讯...
    99+
    2023-06-08
  • Vue中实现组件间通讯的方式有哪些
    这篇文章主要讲解了“Vue中实现组件间通讯的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue中实现组件间通讯的方式有哪些”吧!1.那些场景需要通讯?由于 Vue 所有的组件呈现...
    99+
    2023-06-30
  • css常用的引用方式有哪些
    css常用的引用方式有:1.内部引用。2.外部引用。3.在标签中使用。内部引用内部引用就是在html代码中在<style>标签里写的css样式,例如:<style>bdoy{font-size:14px;} ...
    99+
    2024-04-02
  • Spring常用的注入方式有哪些
    Spring常用的注入方式有以下几种:1. 构造器注入(Constructor Injection):通过构造器来注入依赖对象。2....
    99+
    2023-08-15
    Spring
  • 常用的wireshark过滤方式有哪些
    常用的Wireshark过滤方式有以下几种:1. IP地址过滤:通过指定源IP地址或目的IP地址来过滤数据包,例如:ip.src==...
    99+
    2023-09-20
    wireshark
  • 常用的java重构方式有哪些
    常用的Java重构方式包括:1. 提取方法(Extract Method):将一段代码逻辑提取为一个独立的方法,提高代码的可读性和可...
    99+
    2023-10-19
    java
  • Vue3获取DOM节点的方式有哪些
    这篇文章主要讲解了“Vue3获取DOM节点的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3获取DOM节点的方式有哪些”吧!1 .原生js获取 DOM 节点:document...
    99+
    2023-07-05
  • mysql优化通常使用的方法有哪些
    这期内容当中小编将会给大家带来有关mysql优化通常使用的方法有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。分享一下常见的几种MySQL数据优化方式。。。。。。。选...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作