vue 父组件通过$refs获取子组件的值和方法详解


Posted in Javascript onNovember 07, 2019

前言

在vue项目中组件之间的通讯是很常见的问题,同时也是很重要的问题,我们大致可以将其分为三种情况:

父传子:在父组件中绑定值,在子组件中用props接收

子传父:在父组件中监听一个事件,在子组件中利用$emit触发这个事件并带上数据作为第二个参数,这时父组件中监听事件的回调函数就会被调用,回调函数的参数就是子组件带上来的数据,这样就可以在父组件中使用子组件的数据了,

兄弟之间的传递:我们可以使用事件总线(eventBus)来轻松的解决,其实就是发布订阅者模式

今天我们要看的是父组件如何直接调取子组件的数据和方法,而不是通过子组件传上来的

在这里我们要理解父组件直接拿事件是在父组件上,子组件传上来数据,事件是在子组件上,是完全不同的两种情况

代码展示

子组件 children.vue,我们在子组件中定义了数据sonData和方法sonMethod

// children.vue

<template>
 <div>我是 children</div>
</template>

<script>
export default {
 data: () => ({
  sonData: '我是子组件的数据!'
 }),
 methods: {
  sonMethod() {
   console.log('我是子组件的方法!')
  }
 },
 computed: {
  
 },
 created() {

 }
}
</script>

父组件 文件

// 父组件

<template>
 <div>
  <children ref='ch'>
  </children>
  <h1 @click="onclick">父组件</h1>
 </div>
</template>

<script>
import children from './coms/children'
export default {
 data() {
  return {}
 },
 components: {
  children
 },
 methods: {
  onclick() {
  // 或者 let chil = this.$refs['ch']
   let chil = this.$refs.ch

  // 父组件可以通过$refs拿到子组件的对象
  // 然后直接调用子组件的 methods里的方法和data里的数据
   console.log(chil) //子组件对象
   console.log(chil.sonData) // 我是子组件的数据
   console.log(chil.sonMethod()) // 我是子组件的方法
  }
 }
}
</script>

注意事项

因为 ref 本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们 - 它们还不存在!,所以它不是响应式的,不能用在模板或者计算属性中。

以上这篇vue 父组件通过$refs获取子组件的值和方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js no-repeat写法 背景不重复
Mar 18 Javascript
jQuery 使用手册(六)
Sep 23 Javascript
HTTP 304错误的详细讲解
Nov 13 Javascript
js/jQuery简单实现选项卡功能
Jan 02 Javascript
js创建表单元素并使用submit进行提交
Aug 14 Javascript
jQuery实现“扫码阅读”功能
Jan 21 Javascript
JQuery实现展开关闭层的方法
Feb 17 Javascript
vuejs实现本地数据的筛选分页功能思路详解
Nov 15 Javascript
layer插件select选中默认值的方法
Aug 14 Javascript
在vue 中使用 less的教程详解
Sep 26 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
Oct 23 Javascript
Javascript中window.name属性详解
Nov 19 Javascript
vue基本使用--refs获取组件或元素的实例
Nov 07 #Javascript
浅谈Vue中render中的h箭头函数
Nov 07 #Javascript
基于JavaScript伪随机正态分布代码实例
Nov 07 #Javascript
Vue 通过公共字段,拼接两个对象数组的实例
Nov 07 #Javascript
vue之a-table中实现清空选中的数据
Nov 07 #Javascript
vue实现将一个数组内的相同数据进行合并
Nov 07 #Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 #jQuery
You might like
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
PHP中的Memcache详解
2014/04/05 PHP
开启PHP的伪静态模式
2015/12/31 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
js对象的比较
2011/02/26 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
jquery搜索框效果实现方法
2015/01/16 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
Python中创建二维数组
2018/10/17 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
如何清空Session
2015/02/23 面试题
村级环境卫生整治方案
2014/05/04 职场文书
党员创先争优心得体会
2014/09/11 职场文书
2014高中生入党思想汇报范文
2014/09/13 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
严以用权学习心得体会
2016/01/12 职场文书