vue中的ref

一,vue2的$refs与ref

理解:this.$refs是一个对象,他是当前组件使用ref注册过特性的所有dom元素和子组件的实例。

也就是通过ref来注册一个元素,通过this.$refs来访问注册的dom元素或子组件实例

用法

1,作用在当前页的普通标签上,获取的是当前页面节点的dom元素,this.$refs.refName,

2,作用在子组件上,获取的是子组件对象,调用方式也是this.$refs.refName

3,与v-for一起使用,动态实现循环列表类的标签

注意

  • this.refs必须要在页面挂载完成之后才能调用,例如created阶段,这时候页面还没有挂载el,整个视图不可见,因此this.refs无法获取到dom,可以在mounted中实现
  • 在v-if和v-show条件渲染之后调用可能获取不到。因为refs不是响应式的,他是作为渲染结果被创建的,因此在初始渲染的时候获取不到

示例

html 复制代码
<div ref="scroll" class="list">
    <el-button type="primary" @click="getDom()"></el-button>
</div>

<script>
    getDom() {
        const dom = this.$refs.scroll;
    }
</script>

二,vue3的ref()

概念

ref()是一个函数,他接受一个参数(普通的原始数据),并返回一个响应式的带有.value属性的ref对象。

示例

javascript 复制代码
import {ref} from 'vue';

const a = ref(1);
console.log(a.value); // 1

说明:

如果在组件模板中使用ref,则需要在setup()钩子函数中声明ref

ref()与reactive()的区别

ref()是将基本的值类型数据进行包装,转换成一个响应式的值;而reactive()是将引用类型的值转换成响应式的值。例如:ref(1) === reactive({ value: 1})

相关推荐
半个烧饼不加肉5 小时前
JS 底层探究-- 调用栈(Call Stack)
开发语言·前端·javascript
码上暴富5 小时前
el-table表格全屏/管理显示字段/导出功能封装
vue.js
子午5 小时前
基于DeepSeek的智能校园教务管理系统~Web管理系统+Vue3+Python+DeepSeek智能问答
前端
change_fate6 小时前
ERR_PNPM_WORKSPACE_PKG_NOT_FOUND In ...
java·服务器·前端
超人不会飞_Jay6 小时前
26.6.3Vue笔记
前端·vue.js·笔记
御坂100276 小时前
Vue - @change应用实现下拉框联动功能
前端·javascript·vue.js
小雨下雨的雨6 小时前
基于 Electron 运行时的鸿蒙PC桌面应用-安全可靠的随机密码生成工具
前端·javascript·华为·electron·前端框架·鸿蒙
瘦瘦瘦大人6 小时前
Vue 项目实现关闭/刷新浏览器窗口前的离开确认提示
前端·javascript·vue.js
大家的林语冰6 小时前
尤雨溪官宣:Vite+ 全员加盟 Cloudflare,正式进军全栈开发和 AI 部署云平台!
前端·javascript·vite
独特的螺狮粉6 小时前
金属硬度与熔点对照表APP - 通过鸿蒙PC Electron框架完整技术实现指南
前端·javascript·electron·前端框架·开源·鸿蒙