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. Java 在Word中创建多级项目符号列表和编号列表

    本文分享通过Java程序代码在Word中创建多级项目符号列表和编号列表的方法.程序运行环境如下: IntelliJ IDEA 2018(JDK 1.8.0) Word 2013 Word Jar包:F ...

  2. 文件上传之WAF绕过及相安全防护

    文件上传在数据包中可修改的地方 Content-Disposition:一般可更改 name:表单参数值,不能更改 filename:文件名,可以更改 Content-Type:文件 MIME,视情况 ...

  3. 深入理解jvm-2Edition-Java内存区域

    1.运行时数据区域 Java虚拟机会将内存区域划分为几个区域,每个区域储存不同类型的数据或承担不同的功能. PC,堆-Java堆,栈-虚拟机栈.本地方法栈,方法区.直接内存. 当类被实例化或stati ...

  4. 『Java』StringBuilder类使用方法

    String类存在的问题 String类的底层是一个被final修饰的byte[],不能改变. 为了解决以上问题,可以使用java.lang.StringBuilder类. StringBuilder ...

  5. C语言自学第一天

    直接上代码 1 #include<stdio.h> 2 #include<math.h> 3 /*定义符号常量(预处理)注:可为各种类型*/ 4 #define STUDY & ...

  6. 用AutoHotkey做汉字到Unicode字符串的转换

    要把汉字转换为搜的形式,也就是在汉字的Unicode Big Endian编码前面加"&#x",后面加分号.例如""字转换后为"搜" ...

  7. 删除EFI系统分区(ESP)后Windows无法启动,重建引导分区并修复启动的过程

    @ 目录 一.开机故障描述 二.工具: 三.什么是EFI系统分区 四.如何查看EFI系统分区 五.删除后如何重建系统分区 1.建立未分配空间 2.建立ESP分区 3.按下图,ESP分区的大小200M即 ...

  8. 我写一篇文章就是要批评CSDN! 因为蓝湖3.0的更新

    对于开发者,经常会使用,学习到各种环境语言和工具 我们不只是在不断的在搬运知识,更多时候我们也是在 分享我们学到的"新知识", 当我们有幸觉得自己发现了新的知识与技术时,作为分享者 ...

  9. kali虚拟机安装VMTools、更新源、安装docker、配置sqli-labs

    一.安装VMTools: 传送门:关于安装VMTools 跟其他版本的虚拟机安装VMTools没什么区别,也得连网(我是kali用dhcp开nat模式) 之后按照上面的链接根据博主的步骤一步一步来即可 ...

  10. SQL 练习3

    查询存在" 01 "课程,可能不存在" 02 "课程的情况(不存在时显示为 null ) SELECT * FROM (SELECT * FROM SC WHE ...