首页 > 其他分享 >Vue组件之间的传值

Vue组件之间的传值

时间:2024-09-06 10:52:07浏览次数:11  
标签:Vue bus msg export 组件 childComponent 传值

一、父组件给子组件传值:prop

1、父组件部分:
在调用子组件的时候,使用 v-bind 将 msg 的值绑定到子组件上:parentMsg=“msg”

<child-component  :parentMsg="msg"></child-component>
//引入子组件
import childComponent form '@component/childComponent'

export default{
	//注册子组件
	components:{
		childComponent: childComponent 
	},
	data(){
		return{
			//要传递给子组件的数据
			msg: '从父组件传过来的值parentMsg'
		}
	}
}

2、子组件部分:

用props来接收父组件传过来的值

<template>
	<div>
		{{parentMsg}}
	</div>
</template>
export default{
	name:'childComponent',
	props:['parentMsg']
}

二、子组件给父组件传值:this.$emit

1、子组件部分:
子组件主要通过事件传递数据给父组件

<template>
	<div>
		<div @click="childEvent"></div>
	</div>
</template>
export default{
	name:'childComponent',
	methods:{
		childEvent(){
			this.$emit('childEvent', '从子组件传过来的参数childMsg');
			//this.$emit('与在父组件中子组件调用的地方自定义的事件名一致','要传递的值1','要传递的值2',...)
		}
	}
}

2、父组件部分:

声明了一个方法 getChildMsg,用 childEvent自定义 事件调用 getChildMsg方法,获取到从子组件传递过来的参数

<child-component  @childEvent="getChildMsg"></child-component>
//引入子组件
import childComponent form '@component/childComponent'

export default{
	//注册子组件
	components:{
		childComponent: childComponent 
	},
	data(){
		return{
			//要传递给子组件的数据
			msg: '从父组件传过来的值parentMsg'
		}
	},
	methods:{
		getChildMsg(msg){
			console.log(msg);//从子组件传过来的参数childMsg
		}
	}
}

3、父组件调用子组件方法:ref

ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例:

<child-component ref="childComponent"></child-component>
this.$refs.childComponent.子组件的方法名(父组件给子组件传的参数);

三、兄弟组件之间的传值

兄弟组件之间的传值和子组件给父组件传值非常相似,都是用$emit。
原理:vue一个新的实例,相当于一个站,连接着两个组件,也就是一个中央事件总线。
第1步:创建一个bus实例eventBus.js:

import Vue from 'Vue'
export default new Vue

第2步:创建一个firdtChild.vue组件,引入bus,接着按绑定一个数据传输事件:$emit传输事件

<template>
	<div id="firstChild">
        <h2>firstChild组件</h2>
        <button @click="sendMes">向兄弟组件传值</button>
    </div>
</template>
<script>
    import bus from "./assets/eventBus"
	export default{
        methods:{
            sendMes:function(){
            	//传输的事件名和参数
                bus.$emit("userDefindEvent","这是传输的信息,哈哈哈哈哈");
            }
        }
    }
</script>

第3步:创建另一个组件secondChild.vue,引入bus实例:$on接收事件;

<template>
	<div id="secondChild">
        <h2>secondChild组件</h2>
        <p>从firstChild传过来的参数:{{msg}}</p>
    </div>
</template>
<script>
    import bus from "./assets/eventBus";
	export default{
        data(){
            return:{
                msg:''
            }
        },
        mouted(){
            var self = this;
            bus.$on("userDefindEvent",function(sendMsg){
                //此处的事件名,与firstChild.vue定义的事件名一致
                self.msg = sendMsg;
                console.log(self.msg);// --这是传输的信息,哈哈哈哈哈
            })
        }
    }
</script>


标签:Vue,bus,msg,export,组件,childComponent,传值
From: https://blog.51cto.com/u_16597584/11936550

相关文章

  • vue+ThreeJS:从0 到1 搭建开发环境
    文章目录一、下载安装(懒人版)二、顺序安装1,下载安装nodejs2,安装vue-cli3,创建vue-three项目。4,安装threeJS5,安装elementUI(选装)最终package.json文件如下:本系列教程是在vue2.X的基础上加载threeJS程序,来开发各种示例程序。一、下载安装(懒人版)下载vue-three系统包,n......
  • 基于django+vue月知晓彩妆销售系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在当今快节奏与高度个性化的消费市场中,彩妆行业以其丰富多样的产品和不断创新的趋势蓬勃发展。随着消费者对美的追求日益提升,彩妆产品的选......
  • 基于django+vue远程就医问诊系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网应用的普及,远程就医问诊系统应运而生,成为解决医疗资源分布不均、患者就医难问题的有效途径。传统医疗模式......
  • 基于django+vue员工信息管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着企业规模的日益扩大,员工数量激增,传统的人工管理方式已难以满足现代企业对高效、精准、实时信息管理的需求。员工信息管理作为企业日常......
  • Vue 中的 Vuex:全面解析与使用教程
    什么是Vuex?Vuex是Vue.js官方提供的状态管理模式,专为Vue.js应用设计。它通过集中式存储管理应用中所有的组件状态,允许组件之间更方便地共享数据,并提供了一套规则来确保状态以可预测的方式发生变化。Vuex对大型应用尤其有用,因为它将组件中的状态提取到外部,并通过全局状......
  • Vue+Echert集成实现数据可视化
    ApacheEChartsecherts官方文档 echerts依赖引入方式方式一:1.安装echarts依赖//二选一npminstallecharts--savenpminstallecharts-S//二选一npminstall-gcnpm--registry=https://registry.npm.taobao.orgcnpminstallecharts-S2.全局注入......
  • Vue 实现图片下拉选择控件
    element-ui的组件库中没有图片下拉选择组件,基于el-select组件做的改动并不能完全满足需求,因此决定重写一个。从头到尾做下来收获很多,我决定把实现过程中遇到的问题记录一下。效果图在线试用地址设计要点接下来将上面代码中的关键部分拆分介绍1.回显选中的图片和lab......
  • vue3 tsx 测试几种使用方式
    总论tsxsetup里面定义了returndom元素,则optionsapi的render函数不生效options的render函数生效前提是setup里面不能returndomoptions的render里面可以直接使用this访问setup里面的数据或者ctxtsx一般最好用defineComponent包裹,这样响应式才能生效tsxdom语法使用{}......
  • php基于Vue的助农生鲜销售系统的设计与实现(源码+文档+调试+讲解)
    收藏关注不迷路!!......
  • springboot+vue+mybatis计算机毕业设计房屋租赁管理系统+PPT+论文+讲解+售后
    随着社会的不断进步与发展,人们经济水平也不断的提高,于是对各行各业需求也越来越高。特别是从2019年新型冠状病毒爆发以来,利用计算机网络来处理各行业事务这一概念更深入人心,由于工作繁忙以及疫情的原因,房屋租赁也是比较难实施的。如果开发一款房屋租赁管理系统,可以让用户在最......