Vue2:通过ref获取DOM元素

一、场景描述

我们在页面的开发过程中,经常需要操作dom元素,来实现我们需要的效果。

以往js中,我们是通过给dom添加id,然后,通过js代码document来获取这个dom

简写代码案例:

html 复制代码
<h2 id="test">这里是h2标签</h2>

<script>
	document.getElementById('test')
</script>

二、使用ref获取dom元素

1、ref加在html元素上

我们学习Vue之后,就不在使用这个方法来获取dom元素了。

一般,我们在Vue中,都是在vc中操作dom

所以,这个时候,我们使用ref属性来获取dom,从而实现操作效果。

简写代码案例:

html 复制代码
<h2 v-text="msg" ref="title"></h2>


<script>
	console.log(this.$refs.title);
</script>

效果展示:

2、ref加在vue组件上

简写代码案例:

html 复制代码
<School ref="sch"/>
<script>
	console.log(this.$refs.sch);
</script>

效果展示:

3、直接输出$refs

html 复制代码
<h2 v-text="msg" ref="title"></h2>
<button @click="showDOM" ref="btn">点我输出上方的DOM元素</button>
<School ref="sch"/>

<script>
	console.log(this.$refs);
</script>

效果展示:

三、总结

  1. 被用来给元素或子组件注册引用信息(id的替代者)
  2. 应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)
  3. 使用方式:
    1. 打标识:<h1 ref="xxx">.....</h1><School ref="xxx"></School>
    2. 获取:this.$refs.xxx

这对后面学习组件间通信非常有用!

四、完整代码

html 复制代码
<template>
    <div>
        <h2 v-text="msg" ref="title"></h2>
        <button @click="showDOM" ref="btn">点我输出上方的DOM元素</button>
        <School ref="sch"/>
    </div>
</template>

<script>
    //App组件是汇总所有的组件的组件,所以,这里需要引入所有的它直接管理的子组件
    //引入School组件
    import School from './components/School'
    export default {
        name: "App",
        components:{School},
        data() {
            return {
                msg:"欢迎学习Vue!"
            }
        },
        methods:{
            showDOM(){
                console.log(this.$refs.title) //真实DOM元素
                console.log(this.$refs.btn) //真实DOM元素
                console.log(this.$refs.sch) //School组件的实例对象(vc)
            }
        }
    }
</script>
相关推荐
css趣多多4 分钟前
this.$watch
前端·javascript·vue.js
Code小翊8 分钟前
JS语法速查手册,一遍过JS
javascript
干前端25 分钟前
Vue3虚拟滚动列表组件进阶:不定高度及原理分析!!!
前端·前端组件
子春一28 分钟前
Flutter for OpenHarmony:构建一个 Flutter 天气卡片组件,深入解析动态 UI、响应式布局与语义化设计
javascript·flutter·ui
雨季66631 分钟前
Flutter 三端应用实战:OpenHarmony “极简文本行数统计器”
开发语言·前端·flutter·ui·交互
有来技术38 分钟前
ASP.NET Core 权限管理系统(RBAC)设计与实现|vue3-element-admin .NET 后端
vue.js·后端·c#·asp.net·.net
qq_124987075340 分钟前
基于springboot的林业资源管理系统设计与实现(源码+论文+部署+安装)
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
MAHATMA玛哈特科技44 分钟前
以曲求直:校平技术中的反直觉哲学
前端·数据库·制造·校平机·矫平机·液压矫平机
C澒1 小时前
前端技术核心领域与实践方向
前端·系统架构
Remember_9931 小时前
Java 单例模式深度解析:设计原理、实现范式与企业级应用场景
java·开发语言·javascript·单例模式·ecmascript