参考网址:https://www.jianshu.com/p/46573a741c29

一、父子组件之间的传值----props/$emit

组件之间的传值,我们比较常用到的是props/$emit

1、父组件向子组件传值--props

这里我们在父组件中定义的extensionObj是一个对象

<Extension :extensionObj="extensionObj"/>
data(){
return{
extensionObj: {},
}
}

在子组件中接收值

props:{
extensionObj: {
type: Object,
default: {}
},
},

2、子组件向父组件传值

子组件:

<col @click="tableClickBtn(item)"></col>

写个方法触发

tableBtnClick(item){
this.$emit('select',item);
}

父组件:

<StaffDialog ref="staffDialogRef" @select="staffDialogSelect"/>

写个方法接收

staffDialogSelect(item) {
this.searchObj = item;
}

二、父组件向下(深层)子组件传值----provide/inject

这里引用vue官网文档里的话

类型:

provide:Object | () => Object

inject:Array<string> | { [key: string]: string | Symbol | Object }

详细:

provide 和 inject 主要在开发高阶插件/组件库时使用。并不推荐用于普通应用程序代码中。

provide 选项应该是一个对象或返回一个对象的函数

inject 选项应该是:

一个字符串数组,或

一个对象,对象的 key 是本地的绑定名,value 是:

在可用的注入内容中搜索用的 key (字符串或 Symbol),或

一个对象,该对象的:

from property 是在可用的注入内容中搜索用的 key (字符串或 Symbol)

default property 是降级情况下使用的 value

// 父级组件提供 'foo'
var Provider = {
provide: {
foo: 'bar'
},
// ...
} // 子组件注入 'foo'
var Child = {
inject: ['foo'],
created () {
console.log(this.foo) // => "bar"
}
// ...
}

父组件中getCustInfo为接口返回的数据

provide(){
return {
getCustInfo: this.getCustInfo
}
},

子组件接收

inject: ['getCustInfo'],

这里的getCustInfo也可以个是一个方法,返回一个函数

methods:{
getCustInfo(){
return this.custInfo; //custInfo是接口返回的数据
}
}

那么,子组件的接收应该这样

custInfo(){
return this.getCustInfo();
},

三、访问父、子组件----ref、child

1、ref--在父组件中访问子组件

引用官网api:

尽管存在 prop 和事件,有的时候你仍可能需要在 JavaScript 里直接访问一个子组件。为了达到这个目的,你可以通过 ref 这个 attribute 为子组件赋予一个 ID 引用。例如:

<base-input ref="usernameInput"></base-input>

现在在你已经定义了这个 ref 的组件里,你可以使用:

this.$refs.usernameInput

注意:refs。

2、父、子组件之间的访问

引用官网api:

指定已创建的实例之父实例,在两者之间建立父子关系。子实例可以用 this.children 数组中。

节制地使用 children - 它们的主要目的是作为访问组件的应急方法。更推荐用 props 和 events 实现父子组件通信

这里组件之间的访问,目前实战中用到的较少。按官网的话,就是不太建议使用。

作者:为光pig
链接:https://www.jianshu.com/p/46573a741c29
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

vue--三种组件中之间的传值的更多相关文章

  1. java Data、String、Long三种日期类型之间的相互转换

    java Data.String.Long三种日期类型之间的相互转换      // date类型转换为String类型   // formatType格式为yyyy-MM-dd HH:mm:ss// ...

  2. 基于vue项目的组件中导入mui框架初始化滑动等效果时需移除严格模式的问题

    基于vue项目的组件中导入mui框架初始化滑动等效果时,控制台报错:Uncaught TypeError: 'caller', 'callee', and 'arguments' properties ...

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

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

  4. vue常见的三种组件通讯—props,$refs,this.$emit

    一.父组件--->子组件 props 1.特点:props是用于父组件向子组件传递数据信息(props是单向绑定的,即只能父组件向子组件传递,不能反向 2.用法:父组件中使用子组件时,绑定要传递 ...

  5. Vue组件中的父子传值

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. java设计模式---三种工厂模式之间的区别

    简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他 ...

  7. vue(三)-父子组件通信

    原因 :  Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. props  父组件给子组件传递数据 props:作用是父组件给 ...

  8. ios学习网络------4 UIWebView以三种方式中的本地数据

    UIWebView这是IOS内置的浏览器.能够浏览网页,打开文档  html/htm  pdf   docx  txt等待格文档类型. safari浏览器是通过UIWebView制作. server将 ...

  9. 空数组在以下三种遍历中均不可更改:forEach、map和for...in

    首先,我们要知道对于forEach.map和for...in三种遍历,在不是空数组的情况下,要想实现更改原数组的方法,代码如下: var list = [1,2,3,4]; var list1 = [ ...

随机推荐

  1. Linux_NTP

    服务器端配置 允许这些IP向自己同步时间 restrict x.x.x.x mask x.x.x.x nomodiy notrap 当前定义的所有server服务器无法同步后,和自身同步 server ...

  2. NOIP模拟赛T3 斐波那契

    1.题目 求 \[\sum_{i=1}^n \sum_{j=1}^m \gcd(F_i,F_j) \] 其中 \(F_k\) 表示斐波那契数列的第 \(k\) 项,对 \(10^9 + 7\) 取模. ...

  3. Codeforces Round #707 Editorial Div2 题解

    CF1501 Div2 题解 CF1501A 这道题其实是一道英语阅读题,然后样例解释又不清晰,所以我看了好久,首先它告诉了你每个站点的预期到达时间 \(a_i\) ,以及每个站点的预期出发时间 \( ...

  4. xmind8 Mac序列号

    1.首先去官网下载xmind8的安装包:XMind for Mac 也可以去我的百度网盘下载:    链接:https://pan.baidu.com/s/1eY52YsSaPmr-YFhB62Cli ...

  5. LeetCode 887. Super Egg Drop

    题目链接:https://leetcode.com/problems/super-egg-drop/ 题意:给你K个鸡蛋以及一栋N层楼的建筑,已知存在某一个楼层F(0<=F<=N),在不高 ...

  6. Scala学习——隐式转换

    scala隐式转换 一.需求:为一个类添加一个新的方法 java:动态代理 scala:隐式转换 隐式转换例子: 1.man to superMan package top.ruandb.scala. ...

  7. 每天五分钟Go - 循环语句

    带条件的for循环 for init; condition; post { } 示例代码 for i:=0;i<10;i++{ fmt.Println("current:", ...

  8. Redis双写一致性与缓存更新策略

    一.双写一致性 双写一致性,也就是说 Redis 和 mysql 数据同步 双写一致性数据同步的方案有: 1.先更新数据库,再更新缓存 这个方案一般不用: 因为当有两个请求AB先后更新数据库后,A应该 ...

  9. Tr0ll靶机

    一.主机探测 二.信息收集 进入21端口 发现文件并下载 下载文件 作为字典进行登录爆破 用字典爆破 ssh登录 查找信息   /etc/init.d/ssh start scp root@192.1 ...

  10. Github连接远程仓库详细操作

    首先 咱们需要配置ssh密钥   如何生成密钥呢    我们先来看下命令 在桌面新建一个文件夹,命名规范尽量不要使用中文,然后在文件夹内  新建测试文本: 如图   在文件夹内空白处右击进入GIt b ...