Vue中 ref、$refs区别与使用
定义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区别与使用的更多相关文章
- vue中使用refs定位dom出现undefined?
之前在公司做项目,一直感觉用ref来定位dom节点挺方便的.但是期间遇到了一个问题,就是在mounted(){}钩子里面使用this.$refs.xxx,打印出来的却是undefined? 于是我就对 ...
- Vue.js-11:第十一章 - Vue 中 ref 的使用
一.前言 在之前的前端开发中,为了实现我们的需求,通常采用的方案是通过 JS/Jquery 直接操纵页面的 DOM 元素,得益于 Jquery 对于 DOM 元素优异的操作能力,我们可以很轻易的对获取 ...
- typescript无法识别vue中的$refs
例如:vue-fullscreen <template> <div class="Test"> <fullscreen ref="fulls ...
- 17、前端知识点--Vue中ref的使用
methods里面的方法,需要手动触发才会执行. 如果想让页面一上来就执行的话,就需要写在mounted这个钩子函数中. <body> <div id="app" ...
- vue中this.$refs可以拿到,但是里面的属性undefind的问题
1.和vue的生命周期有关,必须要在从mounted开始拿,才能拿得到里面的Dom元素 2.想在element ui 对话框打开后取dom时,应该使用$nextTick,而不是直接使用this.$re ...
- vue 中 assets 和 static 的区别
Vue中的静态资源管理(src下的assets和static文件夹的区别)
- vue中$refs的使用
vue中$refs获取组件或元素: 获取的元素就相当于是一个原生获取的元素,可以进行操作 this.$refs.ele.style.color = 'red
- vue中extend/component/mixins/extends的区别
vue中extend/component/mixins/extends的区别 教你写一个vue toast弹窗组件 Vue.extend构造器的延伸
- vue中$mount与el区别
vue中的$mount和el两者在使用中没有什么区别,都是将实例化后的vue挂载到指定的DOM元素中 用法: 如果在实例化vue时指定el,则该vue将会渲染在el对应的DOM中 反之 没有指定el, ...
- ElementUI(vue UI库)、iView(vue UI库)、ant design(react UI库)中组件的区别
ElementUI(vue UI库).iView(vue UI库).ant design(react UI库)中组件的区别: 事项 ElementUI iView ant design 全局加载进度条 ...
随机推荐
- P1067 [NOIP2009 普及组] 多项式输出 题解
目录 题目 要注意的地方 code 题目 P1067 [NOIP2009 普及组] 多项式输出 要注意的地方 是不是常数项 是不是1 或 -1 输入的是不是第一个 ^1 负数 code #includ ...
- Java基础之变量与常量
变量 定义:可以变化的量. Java是一种强类型语言,每个变量都必须声明其类型. Java变量是程序种最基本的存储单元,其要素包括变量名,变量类型和作用域. //数据类型 变量名 = 值:可以使用逗号 ...
- Ubuntu 20.04 部署Prmoetheus+grafana+mysql+mysqld_exporter+node_exporter
Prometheus简介 Prometheus是一个功能强大的开源监控系统,可从您的服务中收集指标并将其存储在时间序列数据库中.它通过Grafana等工具提供多维数据模型,灵活的查询语言和多样化的可视 ...
- 040_Field Set
Field Set是一组字段.例如,您可以有一个Field Set,其中包含描述用户的名字,中间名,姓氏和业务标题的字段.将Field Set添加到Visualforce页面时,开发人员可以遍历字段并 ...
- 「SOL」序列 (LOJ/NOI2019)
准备写新博客的时候发现自己草稿箱里还有一篇咕了十几天的题解 思路挂在了费用流之前-- 题面 > Link LOJ #3158 解析 这道题的本质是一个二分图带权匹配的问题,一个经典的做法是直接做 ...
- JS中Promise
Promise的作用: Promise是异步微任务,解决了异步多层嵌套回调的问题,让代码的可读性更高,更容易维护. Promise如何使用: Promise是ES6提供的一个构造函数,可以使用Prom ...
- vue后台管理系统——用户管理模块
电商后台管理系统的功能--用户管理模块 1. 用户管理概述 通过后台管理用户的账号信息,具体包括用户信息的展示.添加.修改.删除.角色分配.账号启用/注销等功能. 用户信息列表展示 添加用户 修改用户 ...
- Windows10 Docker报错 ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.
问题描述:Windows10 家庭版 docker确认已启动,但是执行 docker-compose up -d 时报错,提示需启动docker: ERROR: Couldn't connect to ...
- python实现学生信息管理系统——界面版
前言(写于2022年5月17日) 这篇博客是我两年前大二时写的,一直放在草稿箱里,还没写完,现在快毕业了,突然翻出来了.虽然博客没写完,但早就写好了代码,可运行的exe文件以及文档.现在上传到gite ...
- OPENSUSE网速慢
无线网卡是Broadcom 4313,刚安装完opensuse,网速只有60Kb左右. 添加packman私有驱动后,网速才正常起来.