Vue中ref和$refs的介绍以及使用方法示例

作者:@Demi 时间:2023-07-02 17:00:10 

前言

在JavaScript中需要通过document.querySelector("#demo")来获取dom节点,然后再获取这个节点的值。在Vue中,我们不用获取dom节点,元素绑定ref之后,直接通过this.$refs即可调用,这样可以减少获取dom节点的消耗。

ref介绍

ref被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向该子组件实例

通俗的讲,ref特性就是为元素或子组件赋予一个ID引用,通过this.$refs.refName来访问元素或子组件的实例


<p ref="p">Hello</p>
<children ref="children"></children>

this.$refs.p
this.$refs.children

this.$refs介绍

this.$refs是一个对象,持有当前组件中注册过 ref特性的所有 DOM 元素和子组件实例

注意: $refs只有在组件渲染完成后才填充,在初始渲染的时候不能访问它们,并且它是非响应式的,因此不能用它在模板中做数据绑定

注意:

当ref和v-for一起使用时,获取到的引用将会是一个数组,包含循环数组源


<template>
<div>
<div ref="myDiv" v-for="(item, index) in arr" :key="index">{{item}}</div>
</div>
</template>

<script>
export default {
data() {
return {
 arr: ['one', 'two', 'three', 'four']
}
},
mounted() {
console.log(this.$refs.myDiv)
},
methods: {}
}
</script>

<style lang="sass" scoped>

</style>

Vue中ref和$refs的介绍以及使用方法示例

实例(通过ref特性调用子组件的方法)

【1】子组件code:


<template>
<div>{{msg}}</div>
</template>

<script>
export default {
data() {
return {
 msg: '我是子组件'
}
},
methods: {
changeMsg() {
 this.msg = '变身'
}
}
}
</script>

<style lang="sass" scoped></style>

【2】父组件code:


<template>
<div @click="parentMethod">
<children ref="children"></children>
</div>
</template>

<script>
import children from 'components/children.vue'
export default {
components: {
children
},
data() {
return {}
},
methods: {
parentMethod() {
 this.$refs.children //返回一个对象
 this.$refs.children.changeMsg() // 调用children的changeMsg方法
}
}
}
</script>

<style lang="sass" scoped></style>

总结

来源:https://blog.csdn.net/qq_38128179/article/details/88876060

标签:vue,ref,$refs
0
投稿

猜你喜欢

  • thinkphp5.1 框架钩子和行为用法实例分析

    2024-05-03 15:48:29
  • Python 解决OPEN读文件报错 ,路径以及r的问题

    2022-06-12 11:06:41
  • MySQL explain根据查询计划去优化SQL语句

    2024-01-26 16:59:26
  • pyTorch深入学习梯度和Linear Regression实现

    2023-05-12 01:00:45
  • 利用Pycharm断点调试Python程序的方法

    2023-07-05 03:47:08
  • Python cookbook(数据结构与算法)筛选及提取序列中元素的方法

    2023-04-27 19:46:34
  • 深入理解Python中装饰器的用法

    2022-04-25 18:59:31
  • 详解Python3操作Mongodb简明易懂教程

    2023-07-20 00:20:05
  • Hadoop-3.1.2完全分布式环境搭建过程图文详解(Windows 10)

    2023-08-06 07:04:50
  • SQL语句删除2条重复数据一条保留一条

    2012-07-11 15:51:44
  • Python练习-承压计算

    2022-04-19 15:52:21
  • 对numpy数据写入文件的方法讲解

    2022-01-24 21:09:31
  • 用javascript连接access数据库的方法

    2024-01-15 11:11:51
  • .NET 6中System.Text.Json的七个特性

    2024-05-02 17:20:02
  • Python开发工具Pycharm的安装以及使用步骤总结

    2022-09-15 08:21:01
  • pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)

    2021-07-02 16:53:41
  • Dockerfile构建一个Python Flask 镜像

    2021-11-12 10:04:01
  • 解决Pandas的DataFrame输出截断和省略的问题

    2021-10-28 10:22:19
  • axios请求二次封装之避免重复发送请求

    2024-04-09 10:45:32
  • 详解Django-channels 实现WebSocket实例

    2021-02-12 03:53:48
  • asp之家 网络编程 m.aspxhome.com