4种Vue组件通信方式实例分享

本文主要和大家分享4种vue组件通信方式:父子组件的通信、非父子组件的eventbus通信、利用本地缓存实现组件通信、vuex通信。希望能帮助到大家。

第一种通信方式:父子组件通信

父组件向子组件传递数据

父组件一共需要做4件事

1.import son from ‘./son.js’ 引入子组件 son

2.在components : {“son”} 里注册所有子组件名称

立即学习“前端免费学习笔记(深入)”;

3.在父组件的template应用子组件,

4.如果需要传递数据给子组件,就在template模板里写

           

 // 1.引入子组件      import counter from './counter'     import son from './son'

登录后复制            

// 2.在ccmponents里注册子组件    components : {        counter,        son    },

登录后复制            

// 3.在template里使用子组件   

登录后复制            

 // 4.如果需要传递数据,也是在templete里写    

登录后复制

子组件只需要做1件事

1.用props接受数据,就可以直接使用数据

2.子组件接受到的数据,不能去修改。如果你的确需要修改,可以用计算属性,或者把数据赋值给子组件data里的一个变量

           

   // 1.用Props接受数据      props: [               'num'           ],

登录后复制            

// 2.如果需要修改得到的数据,可以这样写   props: [            'num'        ],  data () {        return {            number : this.num        }    },

登录后复制

子组件向父组件传递数据

父组件一共需要做2件事情

在template里定义事件

在methods里写函数,监听子组件的事件触发

           

// 1. 在templete里应用子组件时,定义事件changeNumber            

登录后复制            

// 2. 用changeNumber监听事件是否触发        methods: {            changeNumber(e){                console.log('子组件emit了',e);                this.number = e            },        }

登录后复制

子组件一共需要1件事情

在数据变化后,用$emit触发即可

           

// 1. 子组件在数据变化后,用$emit触发即可,第二个参数可以传递参数        methods: {            increment(){                    this.number++                    this.$emit('changeNumber', this.number)                },        }

登录后复制

第二种通信方式: eventBus

eventBus这种通信方式,针对的是非父子组件之间的通信,它的原理还是通过事件的触发和监听。

但是因为是非父子组件的关系,他们需要有一个中间组件来连接。

我是使用的通过在根组件,也就是#app组件上定义了一个所有组件都可以访问到的组件,具体使用方式如下

使用eventBus传递数据,我们一共需要做3件事情

1.给app组件添加Bus属性 (这样所有组件都可以通过this.$root.Bus访问到它,而且不需要引入任何文件)

2.在组件1里,this.$root.Bus.$emit触发事件

3.在组件2里,this.$root.Bus.$on监听事件

           

// 1.在main.js里给app组件,添加bus属性import Vue from 'vue'new Vue({  el: '#app',  components: { App },  template: '',  data(){    return {      Bus : new Vue()    }  }})

登录后复制            

// 2.在组件1里,触发emitincrement(){        this.number++        this.$root.Bus.$emit('eventName', this.number)    },

登录后复制            

// 3.在组件2里,监听事件,接受数据mounted(){    this.$root.Bus.$on('eventName', value => {        this.number = value        console.log('busEvent');    })},

登录后复制

第三种通信方式: 利用localStorage或者sessionStorage

这种通信比较简单,缺点是数据和状态比较混乱,不太容易维护。

通过window.localStorage.getItem(key) 获取数据
通过window.localStorage.setItem(key,value) 存储数据

注意用JSON.parse() / JSON.stringify() 做数据格式转换。

第四种通信方式: 利用Vuex

Vuex比较复杂,可以单独写一篇

相关推荐:

Vue组件化开发经验分享

vue组件父与子通信详解

权限管理模块中动态加载Vue组件实例详解

以上就是4种Vue组件通信方式实例分享的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2787074.html

(0)
上一篇 2025年3月8日 18:02:16
下一篇 2025年3月8日 18:02:27

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • VUE页面加载外部HTML实例详解

    前后端分离,后端提供了接口。但有一部分数据,比较产品说明文件,是存在其他的服务器上的。所以,在页面显示的时候,如果以页面内嵌的形式显示这个说明文件。需要搞点事情以达到想要的效果。本文主要和大家介绍了vue页面中加载外部html的示例代码,小…

    2025年3月8日
    200
  • jQuery表单元素选择器实例讲解

    本文主要和大家详细介绍了jquery选择器之表单元素选择器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 nbsp;html>         input{ display: block; margi…

    2025年3月8日
    200
  • .vue文件的生成和使用实例分享

    这几天新项目用vue2.0开发,由于之前没用过vue,拿到项目框架看到都是.vue文件,本文主要和大家介绍vue2.0开发入门笔记之.vue文件的生成和使用,非常具有实用价值,需要的朋友可以参考下,希望能帮助到大家。 不知道怎么用,以下是关…

    2025年3月8日 编程技术
    200
  • vue粒子特效实例分享

    本文主要和大家介绍vue 粒子特效的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 实现效果: 没错,你看到的上图那些类似于星座图的点和线,是由vue-particles生成的,而且…

    2025年3月8日
    200
  • Nginx设置前后端分离实例代码

    本文主要和大家分享nginx设置前后端分离实例代码,为了帮助大家更好的掌握nginx设置前后端分离,本文分享的代码很详细,希望能帮助到大家。 #user nobody;worker_processes 1;#error_log logs/e…

    编程技术 2025年3月8日
    200
  • 在Vue中highCharts绘制3d饼图实例分享

    本文主要和大家介绍在vue中highcharts绘制3d饼图实例,highcharts是国外知名基于javascript的图表库。由于中文官网的vue中使用highcharts配置繁琐并且需要引入jquery作为依赖,所以弃用。希望本文能帮…

    2025年3月8日
    200
  • Ionic实现验证码倒计时实例分享

    在用户注册的时候,时下不少app都选择了绑定手机号注册,这是一个非常好的想法,便捷用户操作,也很方便遵循实名制的问题,在设计按钮的时候,需要让他显示在输入验证码的旁边,并在用户点击后,开始倒计时,并将按钮变成无法点击效果。本文主要和大家介绍…

    编程技术 2025年3月8日
    200
  • vue使用ref 让父组件调用子组件实例

    父级组件上的三个按钮可以,调用子组件loading的三个方法,执行不同的操作。本文主要和大家介绍vue 使用ref 让父组件调用子组件的方法,需要的朋友可以参考下,希望能帮助到大家。 nbsp;html>              显…

    2025年3月8日
    200
  • js点击收缩或张开的悬浮窗实例分享

    本文主要和大家介绍了js实现可以点击收缩或张开的悬浮窗效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 说明:点击”+“按钮,悬浮窗收缩/展开 思路 1、在html中定义一个p块,定一个id;一个按钮,点击时用。 …

    编程技术 2025年3月8日
    200
  • 用react写一个分页组件的示例

    本文主要和大家介绍用react来写一个分页组件(小结),希望能帮助大家学会用react来写一个分页组件,下面我们一起来学习一下吧。 效果截图(样式可自行修改): 构建项目 create-react-app react-paging-comp…

    2025年3月8日
    200

发表回复

登录后才能评论