定义2个组件:

子组件ChildrenSubRef.vue:

 1 <template>
2 <div>
3
4 </div>
5 </template>
6
7 <script>
8 export default {
9 name: "ChildrenSubRef",
10 data() {
11 return {
12 data1: {
13 a: 111,
14 b: 222
15 },
16 data2: {
17 c: 333,
18 d: 444
19 }
20 }
21 },
22 methods: {
23 getSub1() {
24 return this.$data
25 },
26 getSub2() {
27 console.log('执行子组件方法 getSub2')
28 }
29 }
30 }
31 </script>

父组件ParentDemoRefs.vue:

 1 <template>
2 <div>
3 <h2 @click="getRefB">getRefB</h2>
4 <h2 @click="getRefB_func">getRefB_func</h2>
5 <h2 @click="getRefB_Data">getRefB_Data</h2>
6 <div ref="refA">hello</div>
7 <ChildrenSubRef ref="refB"/>
8 </div>
9 </template>
10
11 <script>
12 import ChildrenSubRef from "@/components/ChildrenSubRef.vue";
13
14 export default {
15 name: "ParentDemoRefs",
16 components: {
17 ChildrenSubRef
18 },
19 methods: {
20
21 getRefB() {
22 console.log(this.$refs.refB)
23 },
24 getRefB_func() {
25 this.$refs.refB.getSub2()
26 },
27 getRefB_Data() {
28 console.log(this.$refs.refB.getSub1())
29 }
30 }
31 };
32 </script>

ref:

我们可以给任意dom或组件附加上ref属性

像这样,只需要在标签上机上属性ref即可,名字可DIY

1 <div ref="refA">hello</div>
2 <ChildrenSubRef ref="refB"/>

$refs:

上面定义的一个或多个含有ref属性的dom元素或组件,在当前组件实例化后会将它们写入组件实例的属性$refs,$refs是一个集合,

页面有一个ref就有一个元素在里面,而实际上$refs里的每个ref都指向它的实例

访问this.$refs.refA 就可以访问到这个refA所在的dom:

<div>hello</div>

访问this.$refs.refB 就可以访问到这个refB所在的Vue组件实例:

在父组件能拿到子组件的实例,就像在子组件中访问子组件实例一样,那就明白ref能干嘛了

可以在父组件访问子组件的数据或方法:

执行子组件方法:

this.$refs.refB.getSub1()

由此看来,$refs提供了访问子组件的一种途径,可以根据实际开发需要使用

Vue中 ref、$refs区别与使用的更多相关文章

  1. vue中使用refs定位dom出现undefined?

    之前在公司做项目,一直感觉用ref来定位dom节点挺方便的.但是期间遇到了一个问题,就是在mounted(){}钩子里面使用this.$refs.xxx,打印出来的却是undefined? 于是我就对 ...

  2. Vue.js-11:第十一章 - Vue 中 ref 的使用

    一.前言 在之前的前端开发中,为了实现我们的需求,通常采用的方案是通过 JS/Jquery 直接操纵页面的 DOM 元素,得益于 Jquery 对于 DOM 元素优异的操作能力,我们可以很轻易的对获取 ...

  3. typescript无法识别vue中的$refs

    例如:vue-fullscreen <template> <div class="Test"> <fullscreen ref="fulls ...

  4. 17、前端知识点--Vue中ref的使用

    methods里面的方法,需要手动触发才会执行. 如果想让页面一上来就执行的话,就需要写在mounted这个钩子函数中. <body> <div id="app" ...

  5. vue中this.$refs可以拿到,但是里面的属性undefind的问题

    1.和vue的生命周期有关,必须要在从mounted开始拿,才能拿得到里面的Dom元素 2.想在element ui 对话框打开后取dom时,应该使用$nextTick,而不是直接使用this.$re ...

  6. vue 中 assets 和 static 的区别

    Vue中的静态资源管理(src下的assets和static文件夹的区别)

  7. vue中$refs的使用

    vue中$refs获取组件或元素: 获取的元素就相当于是一个原生获取的元素,可以进行操作 this.$refs.ele.style.color = 'red

  8. vue中extend/component/mixins/extends的区别

    vue中extend/component/mixins/extends的区别 教你写一个vue toast弹窗组件 Vue.extend构造器的延伸

  9. vue中$mount与el区别

    vue中的$mount和el两者在使用中没有什么区别,都是将实例化后的vue挂载到指定的DOM元素中 用法: 如果在实例化vue时指定el,则该vue将会渲染在el对应的DOM中 反之 没有指定el, ...

  10. ElementUI(vue UI库)、iView(vue UI库)、ant design(react UI库)中组件的区别

    ElementUI(vue UI库).iView(vue UI库).ant design(react UI库)中组件的区别: 事项 ElementUI iView ant design 全局加载进度条 ...

随机推荐

  1. 整合log4j

    引入依赖 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId& ...

  2. CF850F 题解

    题意 传送门 有一袋 \(n\) 个颜色球,第 \(i\) 个颜色的球有 \(a_i\) 个. 当袋子里至少有两个不同颜色的球时,执行以下步骤: 一个接一个的按照顺序随机取出两个的球,这些球的颜色可能 ...

  3. 有符号数 无符号数 原码 补码 反码 java用补码表示

    计算机数字的储存分为:1.无符号数,2.有符号数 无符号数:只能表示正数.每一位数都代表2的幂次方.只有地址用无符号数,无符号数不进行算术操作,之进行指针的加减.地址并不会造成错误的结果,而是产生一个 ...

  4. python 知识点总结

    第一张 1)变量 内存空间的表达式 命名要遵守规则 赋值使用 = 2)类型转换 str()将其他类型转成字符窜 int() 将其他类型转成整数 float()将其他类型转成浮点数 3)数据类型 整数类 ...

  5. DDD(二)聚合、聚合根、领域服务、应用服务、仓储”和“工作单元”、领域事件、集成事件

    DDD(二)聚合.聚合根.领域服务.应用服务.仓储"和"工作单元".领域事件.集成事件 如果觉得样式不好:跳转即可 http://www.lifengying.site/ ...

  6. 天龙八部<三联版>二

    段誉来到无锡,遇上乔峰,斗气与乔峰比酒,乔峰误以为段誉是慕容复,段誉被乔峰豪气所折服,像乔峰坦言,乔峰不但不怒,反而对段誉很认可,二人结拜 段誉跟随乔峰来到丐帮,包不同和三女因为慕容复而和丐帮发生争执 ...

  7. .netcore 以widnows服务方式运行

    应用需要 Microsoft.AspNetCore.Hosting.WindowsServices 的包引用. 生成主机时会调用 IHostBuilder.UseWindowsService. 若应用 ...

  8. win10查看笔记本电池性能

    要生成电池报告,可以按Windows + R,窗口中输入 cmd 回车. 在提示符处输入: Powercfg /batteryreport,回车. 就可以在C盘看到性能报告文件.

  9. Appium+Python UI自动化框架

    import datetimefrom appium.webdriver.common.touch_action import TouchActionfrom appium import webdri ...

  10. 安装pytorch时install的packages