在vue实际开发中,经常会碰到组件之间传值的需求,特此记录

父向子组件传值(向下传值)

父组件

<template> <div id="father"><children msg="hello"></children> <!--传递字符串--><children :msg="msg"></children>    <!--传递动态属性--></div>
</template>
<script>
export default {name: "Father",components: {children},data() {return {msg: 'hello'}}
}
</script>

子组件

<template> <div id="children">{{msg}}</div>
</template>
<script>
export default {name: "Children",props:['msg'],watch: {// 动态属性可以监听器进行监听msg(newVal) {console.log(newVal);}},
}
</script>

子向父组件传值(向上传值)

子组件

<template> <!--  在子组件的某一个事件内部,通过this.$emit('自定义的事件',传递的参数) 传递值给父组件。 --><div id="children"><input type="button" value="发送数据" @click='sendData'></div>
</template>
<script>
export default {name: "Children",data() {return {msg: 'hello'}},methods: {  // 触发点击事件sendData() {this.$emit('childSend', this.msg)} }
}
</script>

父组件

<template> <!-- 父组件在调用了子组件的地方,绑定一个自定义事件(childSend), 事件的定义由父组件实现。在实现的拥有默认的参数(val),值就是子组件传递给父组件的值--><div id="father"><children @childSend="fatherGet"></children></div>
</template>
<script>
export default {name: "Father",components: {children},methods: {fatherGet(value) {console.log(value);}}
}
</script>

兄弟组件传值的两种方法

第一种办法
通过事件总线bus传值

在main.js里首先声明

Vue.prototype.$bus=new Vue();

父组件

<template><div id="father"><children-1></children-1><children-2></children-2></div>
</template><script>
export default {components:{children-1,children-2},
}
</script>

子组件1

<template><div class="children-1"><div><input type="button" value="发送数据" @click='sendData'/></div></div>
</template>
<script>
export default {name: "Children-1",data() {return {msg: 'hello'}},methods: {  // 触发点击事件sendData() {this.$bus.$emit('childSend', this.msg)} }
}
</script>

子组件2

<template><div class="children-2"><div>{{msg}}</div></div>
</template>
<script>
export default {name: "Children-2",data() {return {msg: ''}},mounted(){this.$bus.$on('childSend',(value)=>{console.log(value);this.msg = value})}
}
</script>

第二种方法
通过父组件在中间做中间件,相互传值(子组件1传值给父组件,父组件传值给子组件2)

子组件1

<template><div class="children-1"><div><input type="button" value="发送数据" @click='sendData'/></div></div>
</template>
<script>
export default {name: "Children-1",data() {return {msg: 'hello'}},methods: {  // 触发点击事件sendData() {this.$emit('childSend', this.msg)} }
}
</script>

父组件

<template><div id="father"><children-1 @childSend="fatherGet"></children-1> //父组件接收值<children-2 :msg="msg"></children-2>            //向子组件2传值</div>
</template><script>
export default {components:{children-1,children-2},data(){return {msg:'',}},methods: {fatherGet(value) {this.msg = valueconsole.log(value);}}
}
</script>

子组件2

<template><div class="children-2"><div>{{msg}}</div></div>
</template>
<script>
export default {name: "Children-2",props:['msg'],watch: {// 动态属性可以监听器进行监听msg(newVal) {console.log(newVal);}}
}
</script>

vue组件之间传值(详细版)相关推荐

  1. vue组件之间传值方式方法---实战面试篇

    vue组件之间传值方式方法 vue组件传值 vue组件化 什么是组件化? vue组件通讯 父组件向子组件传值 子组件向父组件传值 兄弟组件传值 总结 vue组件传值 最近准备面试跳槽.说到前端面试,有 ...

  2. 深入理解Vue 组件之间传值

    一.父组件向子组件传递数据 在 Vue 中,可以使用props向子组件传递数据. 子组件部分: 这是 header.vue 的 HTML 部分,logo 是在 data 中定义的变量. 如果需要从父组 ...

  3. Vue组件之间传值的几种方法 (直接上代码)

    vue组件之间传值的几种方法总结 一. props(父传子) 父组件 传递 <template><div><HelloWorld :msg="msg" ...

  4. vue组件之间传值几种方法

    方法一.父子组件传值 通过props向下传递 父组件 <div class="menu_header"><Menu :msgChild="msg1&qu ...

  5. vue 组件之间传值 父转子,子传父,同级别之间的传参,跨级别传参

    写这篇文章之前,我对vue组件之间的传值,还是只知道一些基础的传值方式.虽然工作中勉强能够应对,但是想要行云流水感觉还是心有余而力不足,所以在此,我想总结一下vue组件之间的一些传值方式供大家参考,同 ...

  6. vue组件之间传值的几种方式

    vue组件传值 父子组件之间传值.几种常见方式 第一种方式(父传子) 父组件 <m-child :childMsg="parentMsg"></m-child&g ...

  7. (学习总结)vue组件之间传值方式

    最基础的父子组件之间传值,父组件传值给子组件 需要把值传出的组件<组件名 :接收值的变量="传出值"></组件名>接收值的组件data(){}props:[ ...

  8. Vue组件之间传值/调用方法的几种方式

    组件之间传值/调用方法的几种方式 (一)父组件向子组件传值==props 1.在父组件中使用子组件的地方绑定数据 <children :message="message"&g ...

  9. Vue 组件之间传值(传递数据)的5种方法 (七)

    文章目录 一.父传子(父组件向子组件传递数据) 二.子传父(子组件向父组件中传递数据) 三.兄弟组件之间的传值 四.总线传值 五.通过Vuex这个仓库,进行数据交互(后面会讲) 一.父传子(父组件向子 ...

最新文章

  1. spring amqp rabbitmq fanout配置
  2. python输入文字字符串、如何提取某个汉字_python提取字符串中的汉字数字字母
  3. IDA-3D:基于立体视觉的深度感知3D目标检测网络(CVPR2020)
  4. (0004) iOS 开发之CocoaPods 升级过程
  5. 正宁天气预报软件测试,正宁天气预报15天
  6. HTTP代理如何正确处理Cookie(2) - 转载(写的比较详细,并以实例讲解)
  7. python条件查询 或 in_64.Python中ORM查询条件:in和关联模型
  8. 2018~2019-11 20165107 网络对抗技术期末免考 Exp10 Final Powershell学习应用与渗透实践...
  9. 【STM32】外部中断
  10. torch.bmm() 与 torch.matmul()==>张量的相乘运算
  11. oracle 游标内存自动释放,详解Oracle隐式游标和显式游标
  12. 【面经】深度学习算法岗(京东)
  13. 【Linux】用户必须知道的常用终端快捷键
  14. CE修改器使用教程 [基础篇]
  15. 解读《美国国家BIM标准》– BIM能力成熟度模型(六)
  16. 重新安装的keil需要的设置-字体颜色固件库中文显示
  17. 在网页中打开展示pdf文件
  18. 【Android探索】基于OpenCV的微液滴粒径分析APP
  19. 零基础学软件测试难吗?小白怎么半年内成为测试工程师
  20. Excel使用公式截取字符串

热门文章

  1. css文本超出省略号
  2. 进入docker容器
  3. maven私服升级(nexus服务升级)
  4. 招聘直播方案应该如何策划?企业应该如何管理直播招聘?
  5. 【Linux SPI Framework】
  6. C语言魔术阵,C语言编程:扑克牌魔术
  7. linux如何修改文件权限
  8. socket编程python实现
  9. MI测试工具介绍[转帖]
  10. 基于嵌入式SoC单片机C8051F120的雕刻机数控系统