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 相关文章推荐
jquery简单的拖动效果实现原理及示例
Jul 26 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
Mar 26 Javascript
初步使用Node连接Mysql数据库
Mar 03 Javascript
javascript实现列表切换效果
May 02 Javascript
详解js前端代码异常监控
Jan 11 Javascript
Vue项目中引入外部文件的方法(css、js、less)
Jul 24 Javascript
详解webpack + vue + node 打造单页面(入门篇)
Sep 23 Javascript
浅析Vue自定义组件的v-model
Nov 26 Javascript
vue 的点击事件获取当前点击的元素方法
Sep 15 Javascript
mpvue实现微信小程序快递单号查询代码
Apr 03 Javascript
Element Popover 弹出框的使用示例
Jul 26 Javascript
vue组件入门知识全梳理
Sep 21 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
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
php curl基本操作详解
2013/07/23 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
Python编程之string相关操作实例详解
2017/07/22 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
Django如何重置migration的几种情景
2021/02/24 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
CSS3实现点击放大的动画实例代码
2017/02/27 HTML / CSS
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
护理专科毕业推荐信
2013/11/10 职场文书
招聘专员岗位职责
2014/03/07 职场文书
高中生职业规划范文
2014/03/09 职场文书
小学生操行评语大全
2014/04/22 职场文书
大学生英语演讲稿
2014/04/24 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
2014年店长工作总结
2014/11/17 职场文书