vue组件间传值的方法你知道几种
目录
- 一丶父子组件传值
- 二丶子父组件传值
- 三丶兄弟组件传值
- 四丶$parent/$children与ref
- 总结
一丶父子组件传值 先在父组件中给子组件的自定义属性绑定一个 父组件的变量
在子组件的props属性中可以取出父组件给的值,props中的变量用法和data中变量用法完全一样,只不过值的来源不同
export default { name: "child", props: ["自定义属性名"],data() {}}
二丶子父组件传值 先在父组件中给子组件的 自定义属性 绑定一个父组件的函数
export default { name: "father", data() {} methods:{父的处理函数(参数){//参数:得到子组件触发事件($emit)时,传递过来的数据}}})
在子组件中 this.$emit(“父的处理函数”,this.数据) 触发父组件中的函数进行传参
三丶兄弟组件传值 事件总线:
就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件
创建全局空Vue实例:
eventBus
import Vue from 'vue'; const eventBus= new Vue()//创建事件总线export default eventBus;
具体页面使用$emit发布事件 - 传递值
import eventBus from '@u/eventBus'eventBus.$emit('send',‘hello')
具体页面使用$on订阅事件 - 接收组件值
import eventBus from '@u/eventBus'eventBus.$on('send', msg => { console.log(msg)//控制台输出 hello}
注意:$on先进行监听,一旦$emit发布事件后所有组件都可以$on监听到事件。所以传递参数的时候一定已经先进行了监听才能得到参数。比如在父组件中$emit事件放在mounted钩子函数中,等待子组件创建并$on开始监听事件后再去触发$emit发布事件。【vue组件间传值的方法你知道几种】$off()移除事件监听
import eventBus from '@u/eventBus'eventBus.$off('send')
事件订阅功能$on是$eventBus对象完成的,与组件无关,如果用v-if销毁子组件的时候,会形成闭包,造成内存泄露,所有要在销毁组件的时候进行取消监听事件
具体形成原因点击查看
四丶$parent /$children与ref $parent方法是在子组件中可以直接访问该组件的父实例或组件。
在父组件中定义一个切换显示页面执行中的显示方法。
switchLoadPage(msg) {if(!this.loading && msg)this.loadtext=msg; this.loading = !this.loading; },
? 在子组件中直接通过$parent去调用该方法
this.$parent.switchLoadPage();
$children方法是在父组件中可以直接访问子组件的实例,但是不保证子组件的顺序。
ref 被用来给DOM元素或子组件注册引用信息。引用信息会根据父组件的 $refs 对象进行注册。如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子组件上,引用信息就是组件实例。
在父组件中自定义一个表格组件,给子组件加上 ref属性
在父组件中就可以通过this.$refs.result去找到result子组件进行操作,比如把父组件的sdata直接放入子组件中
methods: {info(){this.$refs.result.sdata = https://www.it610.com/article/this.sdata; },}
总结 本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
推荐阅读
- vue2项目中封装echarts地图的优雅方法
- 打包发布你的vue组件到npm
- Vuestic|Vuestic UI - 免费开源的高质量 Vue3 UI 组件库,还内置了漂亮的 Vuestic Admin 后台框架
- angular动态组件加载器的个人理解
- k8s入门集群组件介绍及概念理解
- 前端|js vue base64 byte 转 为文件格式 (以excel为例)
- stm32|C/C++ Qt 自定义Dialog对话框组件应用
- 如何维护一个巨大的Android项目呢(阿里大佬分享的高级Android|如何维护一个巨大的Android项目呢?阿里大佬分享的高级Android 组件化实战,你确定不看看)
- vue|基于spring cloud + nacos + gateway + ssm+的学生管理系统
- VueJs|【Vue 响应式原理】发布订阅模式、观察者模式