Vue中组件之间是如何实现通信的?

  1、父传子:

    父传子父组件通过属性进行传值,子组件通过 props 进行接受;

 1 父组件中:
2
3 <template>
4 <div id="box">
5 我是父组件
6 <Child :msg="info"/>
7 </div>
8 </template>
9 <script>
10 import Child from './child';
11 export default {
12 data:function(){
13 return {
14 info:"时间是把杀猪刀"
15 }
16 },
17 components:{
18 Child
19 }
20 }
21 </script>

      props 接收值的方式有两中:一种是数组另一种是对象;

数组:虽然可以接收 props 传值但是不能定义传值的类型、默认值;

1 <template>
2 <div>
3 我是子组件
4 <p>我是接受到父组件传过来的值:{{msg}}</p>
5 </div>
6 </template>
7 <script>
8 export default {
9 props:['msg'],
10 data:function(){
11 return {
12
13 }
14 }
15 }
16 </script>
对象:接收值的方式可以定义值的类型; 

1 <template>
2 <div>
3 我是子组件
4 <p>我是接受到父组件传过来的值:{{msg}}</p>
5 </div>
6 </template>
7 <script>
8 export default {
9 props:{
10 msg: String
11 },
12 data:function(){
13 return {
14
15 }
16 }
17 }
18 </script>

  props 通过对象接收还可以定义其他东西,也可以利用这些来实现封装一些组件方便下次使用直接调用就好,下面来看一下:

 1  //必填的字符串
2 props:{
3 msg: {
4 type: String,
5 required: true
6 }
7 }
8 // 带有默认值的数字
9 props:{
10 msg: {
11 type: Number,
12 default: 100
13 }
14 }
15 // 带有默认值的对象
16 msg: {
17 type: Object,
18 // 对象或数组默认值必须从一个工厂函数获取
19 default: function () {
20 return { message: 'hello world' }
21 }
22 }
23

    props 更多使用方法可以参考官网: https://cn.vuejs.org/v2/guide/components-props.html 

  2、子传父:

    当子组件给父组件进行传值的时候,要在子组件标签内定义自定义方法 ( 注意自定义方法的函数不需要加( ) )

    在子组件内通过 this.$emit ( ) 触发这个方法; 参数1 是自定义的方法名称; 参数2 是需要传递的参数;

 1 父组件中:
2
3 <template>
4 <div id="box">
5 我是父组件
6 <p>我是接收的子组件传过来的值:{{info}}</p>
13 <Child @sendInfo="getInfo"/>
14 </div>
15 </template>
16 <script>
17 import Child from './child';
18 export default {
19 data:function(){
20 return {
21 info:""
22 }
23 },
24 methods:{
25 getInfo(msg){
26 this.info = msg;
27 }
28 },
29 components:{
30 Child
31 }
32 }
33 </script>
子组件中:

<template>
<div>
我是子组件
<button @click="handleClick">我要向父组件传值</button>
</div>
</template>
<script>
export default {
methods:{
handleClick(){
this.$emit('sendInfo','第二个参数写你要传递的内容')
}
}
}
</script>
  下一章推出非父子组件之间通信和如何利用原生JS实现$on、$emit、$off 来实现非父子组件之间的通信;

    

Vue组件传值(一)之 父子之间如何传值的更多相关文章

  1. Vue组件通信之非父子组件传值

    前言: 如果想要了解非父子关系的组件传值,最好是在了解父传子和子传父的基础上在来了解非父子传值可能会有更透彻的思路. 因为非父子传值是通过定义事件总线来代理实现父传子+子传父从而实现的传值方式. 这是 ...

  2. vue教程3-05 vue组件数据传递、父子组件数据获取,slot,router路由

    vue教程3-05 vue组件数据传递 一.vue默认情况下,子组件也没法访问父组件数据 <!DOCTYPE html> <html lang="en"> ...

  3. vue组件通信之非父子组件通信

    什么顺序不顺序的.. 先来说说非父子组件通信. 首先,我们先来了解下vue中的 1.$emit  触发当前实例上的事件,附加参数都会传给监听器回调. 2.$on  监听当前实例上的自定义事件.事件可以 ...

  4. 7.vue组件(二)--双向绑定,父子组件访问

    本文主要说两件事 1. 如何实现父子组件之间的双向绑定 2. 父组件如何访问子组件的data,method, 子组件如何访问父组件的data,method等 一. 如何实现父子组件之间的双向绑定 案例 ...

  5. vue组件的props

    刚开始学习vue组件的时候经常被 props这个传值搞晕,做个笔记 Vue.component('item', { template: '#item-template', props: { model ...

  6. vue中父子组件之间的传值、非父子组件之间的传值

    在Vue实例中每个组件之间都是相互独立的,都有自己的作用域,所以组件之间是不能直接获取数据.在项目开发中一个组件可能需要获取另一个组件的值,我们可以通过其他方法间接的获取.所以,获取的方法有以下几种: ...

  7. vue项目中的父子组件之间的传值。

    首先说一下父子组件就是在一个vue文件中引入另一个vue文件,被引入vue文件就是子组件,引入vue文件的vue文件就是父组件.而在父组件中是不能直接调用子组件中的变量值的.下面详细说一下,父子组件之 ...

  8. 简述在Vue脚手架中,组件以及父子组件(非父子组件)之间的传值

    1.组件的定义 组成: template:包裹HTML模板片段(反映了数据与最终呈现给用户视图之间的映射关系) 只支持单个template标签: 支持lang配置多种模板语法: script:配置Vu ...

  9. 浅谈vue父子组件之间的传值

    前言:本章主要说下父子组件的传值,为商品列表组件之间的传值做一个基础预热.Github:https://github.com/Ewall1106/mall(请选择分支chapter23) 1.父组件向 ...

随机推荐

  1. 【javaFX学习】(二) 面板手册

    移至http://blog.csdn.net/qq_37837828/article/details/78732591 更新 找了好几个资料,没找到自己想要的,自己整理下吧,方便以后用的时候挑选,边学 ...

  2. Linux文件系统只读 解决方案:

    Linux系统Read-only file system,文件系统只读排查解决方案:文件系统只读机制:当文件系统自身的校验机制发现文件系统存在问题时,为避免文件系统受到进一步的损坏,系统会把文件系统设 ...

  3. 题解 P3158 [CQOI2011]放棋子

    题解 本题是一个 \(DP\) 加 容斥,容斥的式子很好推,重点是如何想到和如何推出 \(DP\) 部分的式子. 因为不同种颜色的棋子不能放在同一行或同一列,所以不同种的棋子是相对独立的. 据此,我们 ...

  4. 题解 biology

    传送门 赛时靠spfa求最长路骗了30pts spfa的时间复杂度是\(O(k|E|)\),不是\(O(k|N|)\)! dijkstra 时间复杂度\(O((n+m)logn)\) 特别注意这两个的 ...

  5. Groovy+Spock单元测试

    一.导入依赖 Spock是基于JUnit的单测框架,提供一些更好的语法,结合Groovy语言,可以写出更为简洁的单测. <!-- groovy依赖 --> <dependency&g ...

  6. CentOS7.6新增或修改SSH端口号的步骤

    1.修改SSH配置文件(注意是sshd_config而不是ssh_config,多了个d) vim /etc/ssh/sshd_config 找到"#Port 22",这一行直接键 ...

  7. mysql导出word的表结构操作

    mysql导出word的表结构操作 1.首先准备好mysql的相关插件mysql-connector-odbc和DBExportDoc 百度网盘地址: 链接:https://pan.baidu.com ...

  8. 如何快速排查发现redis的bigkey?4种方案一次性给到你!

    本篇文章将以redis的bigkey为主题进行技术展开,通过从认识redis的高性能,bigkey的危害.存在原因.4种解决方案,到模拟实战演练的介绍方式,来跟大家一起认识.探讨和学习redis. 先 ...

  9. ASP.NET Core教程:ASP.NET Core 程序部署到Windows系统

    一.创建项目 本篇文章介绍如何将一个ASP.NET Core Web程序部署到Windows系统上.这里以ASP.NET Core WebApi为例进行讲解.首先创建一个ASP.NET Core We ...

  10. 【springboot】validator枚举值校验

    转自: https://blog.csdn.net/aiyaya_/article/details/78588200 一.前言 在spring项目中,校验参数功能使用hibernate validat ...