Vue知识点总结(13)——组件通信-平行传值(超级详细)

news/2024/7/19 12:50:28 标签: vue, js, html, 前端

hello,同学们,之前我们已经学习了组件通信中的父传子和子传父
今天我们要学习的内容是组件通信中的平行传值
平行传值是什么意思呢?
就比如你和哥哥、弟弟、姐姐、妹妹的关系,就是平辈的关系。
之前我们使用组件的时候,通过使用和被使用会产生一个父子关系
平行组件不存在这个关系。

html"><div id="app">
    <App></App>
</div>
<script>
    const bus = new Vue();
    Vue.component('A',{
        data(){
            return{

            }
        },
        template:`
            <button @click='handleClick'>加入购物车</button>
        `,
        methods:{
            handleClick(){
                bus.$emit('add',1);
            }
        }
    });
    Vue.component('B',{
        data(){
            return{
                count:0
            }
        },
        template:`
            <div>
                {{count}}
            </div>
        `,
        methods:{

        },
        created () {
            bus.$on('add',(n) => {
                this.count += n;
            })
        }
    })
    const App = {
        data () {
            return {
                
            }
        },
        template:`
            <div>
                <A></A>
                <B></B>
            </div>
        `,
        methods: {
            
        }
    }
    new Vue({
        el:'#app',
        components: {
            App
        }
    });
</script>

我们照常写了一个全局组件A一个全局组件B

全局组件A中,有一个按钮,伴随一个点击事件,用于传递数据
全局组件B中,只有一个div展示count变量,count就是接收A组件传过来的值

平行组件传值的原理,就是找一个公共中间量。

就像我们之前写A、B两个变量交换值一样,我们通常都会找一个公共的空变量C。把A的值给C,然后把B的值给A,最后把C的值给B。

平行组件的传值和这个思路一样,平行组件间是没有办法直接传值的,必须找一个公共的中间量,就像公共汽车一样。

我们在示例中顶部写的const bus = new Vue();

A组件中,用户点击按钮后,通过bus.$emit()传值,第一个参数是我们自己定义的一个名字,第二个参数是要传递的值
B组件中,我们调用了
created
这个生命周期函数,生命周期这个东西我们之后还会开一篇再讲这个东西,这里我们只需要知道created就是在实例刚刚被创建的时候调用,还没有进行任何的挂载。created中,我们调用**bus.$on()**接收值,第一个参数依然是我们之前自己在A组件中定义的那个名字,第二个参数是个函数,接收其它组件传过来的值

其实还是很简单的,我们就是通过bus这个中间量,起到一个传递的作用
然后一个$emit,一个$on,传递和接收

其实到这里我们就已经完成了平行组件间的传值,然后我们为了方便展示,写了一个局部组件App使用A、B这两个全局组件。然后在我们创建的Vue实例中,直接挂载App这个局部组件即可。

在这里插入图片描述

点击加入购物车之后,展示的count值按照预期一样,完成了+1操作。

到现在为止我们已经学习了组件通信中的父传子、子传父和平行传值。这些都是非常常用的通信方式,下期我们还用讲解一些其它的组件通信方式,虽然不常用,但是不好说在哪儿能用到,比如面试的时候,所以还是多了解一些的好。

有微信小程序课设、毕设需求联系个人QQ:505417246

关注下面微信公众号,可以领取微信小程序、Vue、TypeScript、前端、uni-app、全栈、Nodehtml" title=js>js、Python等实战学习资料
最新最全的前端知识总结和项目源码都会第一时间发布到微信公众号,请大家多多关注,谢谢!

在这里插入图片描述


http://www.niftyadmin.cn/n/1576590.html

相关文章

Vue知识点总结(14)——其它组件通信方式(provide/inject和$parent/$children)(超级详细)

这期是组件通信的最后一期&#xff0c;把剩余的组件通信方式再全部介绍一下。 分别是provide/inject 和 $parent/&#xff04;children。 我们用下面这个示例&#xff0c;把这两种通信方式全部展示一下。 <div id"app"><App></App> </div>…

你值得拥有 —— 25 个 Linux 性能监控工具

你值得拥有 —— 25 个 Linux 性能监控工具 一段时间以来&#xff0c;我们在网上向读者介绍了如何为Linux以及类Linux操作系统配置多种不同的性能监控工具。在这篇文章中我们将罗列一系列使用最频繁的性能监控工具&#xff0c;并对介绍到的每一个工具提供了相应的简介链接&…

Vue知识点总结(15)——匿名插槽(超级详细)

我们在前几期已经说过了组件的各种知识。 接下来我们就要学习插槽的内容了&#xff0c;插槽是Vue组件化开发的拓展内容。 官方文档种解释插槽的作用就是&#xff1a;在vue中实现的一套分发内容的API&#xff0c;将slot元素作为承载内容分发出口。 用大白话说就是&#xff1a;…

《JavaScript高效图形编程(修订版)》——6.6 画布导出器

本节书摘来自异步社区《JavaScript高效图形编程&#xff08;修订版&#xff09;》一书中的第6章&#xff0c;第6.6节&#xff0c;作者&#xff1a;【美】Raffaele Cecco著&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 6.6 画布导出器 画布完全由JavaScript…

Vue知识点总结(16)——具名插槽(超级详细)

上节我们了解了一下插槽的概念和用途&#xff0c;并且详细演示了一下匿名插槽的使用。 这期我们的任务是具名插槽。 从名字我们就可以看出区别&#xff0c;一个是匿名&#xff0c;一个是具名。 我们就不详细说插槽概念的东西了&#xff0c;直接演示具名插槽。 <div id&quo…

《用Python写网络爬虫》——1.4 编写第一个网络爬虫

本节书摘来自异步社区《用Python写网络爬虫》一书中的第1章&#xff0c;第1.4节&#xff0c;作者 [澳]Richard Lawson&#xff08;理查德 劳森&#xff09;&#xff0c;李斌 译&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.4 编写第一个网络爬虫 为了抓…

Vue知识点总结(17)——作用域插槽(超级详细)

之前分别了解了匿名插槽和具名插槽。 这期我们的任务是作用域插槽。 作用域插槽虽然用的不多&#xff0c;但是还是挺重要的。 我们以一个实际需求来展示作用域插槽&#xff0c;因为作用域插槽用的确实不多&#xff0c;只能在实际需求中展示它的意义。 需求&#xff1a; 已经…

《R语言数据挖掘:实用项目解析》——第1章,第1.3节数据类型转换

本节书摘来自华章出版社《R语言数据挖掘&#xff1a;实用项目解析》一书中的第1章&#xff0c;第1.3节数据类型转换&#xff0c;作者&#xff3b;印度&#xff3d;普拉迪帕塔米什拉&#xff08;Pradeepta Mishra&#xff09;&#xff0c;更多章节内容可以访问云栖社区“华章计算…