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. kubernetes/k8s CRI分析-kubelet删除pod分析

    关联博客<kubernetes/k8s CRI 分析-容器运行时接口分析> <kubernetes/k8s CRI分析-kubelet创建pod分析> 之前的博文先对 CRI ...

  2. 面对对象4 Mixins机制 内置方法 反射 异常

    Mixins机制 为什么要有:子类继承父类的时候,可能会碰到需要继承多个父类的情况,那么继承关系也分主类和辅类,既保持主类的功能,也有辅类的功能. 命名方式,我们需要将主类和辅类区分开来,python ...

  3. Python小白的数学建模课-18.最小生成树问题

    最小生成树(MST)是图论中的基本问题,具有广泛的实际应用,在数学建模中也经常出现. 路线设计.道路规划.官网布局.公交路线.网络设计,都可以转化为最小生成树问题,如要求总线路长度最短.材料最少.成本 ...

  4. 数据结构与算法-排序(八)计数排序(Counting Sort)

    摘要 计数排序本质就是统计不同元素出现的次数,然后将元素依次从小到大放置,每个元素看统计的次数,就紧挨着放置几个同样的元素. 看似简单的处理,在算法中,会依据统计的元素次数推算出每个元素的索引位置,这 ...

  5. 题解 d

    传送门 写出来\(n^2\)就有81pts-- \(n^2\)的话枚举最后成为限制的是哪两个矩形,利用前缀和和二分\(n^3\)化\(n^2\)就行了 这题最无脑直接贪心的方法会有后效性 但实际上正解 ...

  6. CSS3图片倒影技术

    http://bbs.itheima.com/thread-330315-1-1.html?wymlxt

  7. sql 中的with 语句使用

    一直以来都很少使用sql中的with语句,但是看到了一篇文章中关于with的使用,它的确蛮好用,希望以后记得使用这个语句.一.with 的用法With alias_name as (select1)[ ...

  8. java操作excel 工具类

    java操作excel 可参考https://blog.csdn.net/xunwei0303/article/details/53213130 直接上代码: 一.java生成excel文件: pac ...

  9. log4j.properties配置文件及详解

    log4j配置文件有三个主要的组件:Logger,Appender和Layout,分别为日志类型,日志输出目的地,日志输出格式. 1. 配置日志级别及appenderName log4j.rootLo ...

  10. ThreadPoolExecutor八种拒绝策略浅析

    转自:http://www.kailing.pub/article/index/arcid/255.html 前言 谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5 ...