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. 我的大学Android开发学习之路——从开始到微信/支付宝/抖音Offer

    前言 笔者2016年高考考入华中科技大学计算机科学与技术专业. 2017年底(大二寒假)拿到今日头条(字节跳动)深圳研发中心Android开发实习生Offer,在深圳研发中心实习至2018年3月. 2 ...

  2. 爱了,字节跳动大神最佳整理:582页Android NDK七大模块学习宝典,理论与实践

    前言 时至今日,短视频App可谓是如日中天,一片兴兴向荣.随着短视频的兴起,音视频开发也越来越受到重视,而且薪资水涨船高,以一线城市为例,音视频工程开发的薪资比Android应用层开发高出40%. 但 ...

  3. 前端人员必会工具-apipost两分钟上手(2分钟玩转apipost)

    本文通过简单介绍如何利用ApiPost调试接口和快速的生成接口文档,让您初步体验ApiPost的魅力! 1. API写完想要测试?试试模拟发送一次请求 新建接口,我想模拟发送请求如下 curl --l ...

  4. moco模拟接口具体操作

    1.get请求 [ { "description": "模拟一个没有参数的get请求", "request": { "uri&qu ...

  5. OSPF的Router-Id

    一.实验拓扑 二.实验编址 三.实验步骤: 1.设置PC的IP等信息 2.启动设备(全选) 3.根据实验编址配置路由器端口IP(先不设置lookback端口) R1: R2: R3: R4: 看一下r ...

  6. noip36

    开场先看一遍题面,凭着错误的感觉t3叫naive是一个原因,312开局.然后就死的很惨. T1 朴素暴力40pts,细想就有80pts,然而我只写了十分钟左右就爬回T3了,所以... 其实都是借口 正 ...

  7. 题解 God Knows

    传送门 这里有个线段树维护单调栈的神仙技巧 同机房dalao @Yubai的不同理解方式 yysy,我考场上连\(n^2\)的暴力都没搞出来 这里实际上求的是最小权极大上升子序列 但这个跟题目几乎没什 ...

  8. MyBatis的useGeneratedKeys使用

    业务需求,用户表为主键自增,添加完用户之后,通过用户ID和角色表进行关联. 问题:由于主键自增,所以在用户添加之前是不知道ID的,当然可以通过查询得到当前的ID,不过需要自己多一步操作. 解决方案:使 ...

  9. ASP.NET Core:中间件

    一.什么是中间件 我们都知道,任何的一个web框架都是把http请求封装成一个管道,每一次的请求都是经过管道的一系列操作,最终才会到达我们写的代码中.而中间件就是用于组成应用程序管道来处理请求和响应的 ...

  10. ARP:地址解析协议

    我们假设这样一个场景:你需要和你网络中的一个设备进行通信,这个设备可能是某种服务器.你用来创建这个通信的应用已经得到了这个远程主机的ip地址,也意味着系统已经有了用来构建它想要在第三层到第7层传递数据 ...