ref属性
官方解释:ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。
简单来说是被用来给元素或子组件注册引用信息(id的替代者)
作用:应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象
例如:
<h1 v-text="msg" id='demo'></h1>
<button @click="showDOM">点我输出上方的DOM元素</button>
methods:{
showDOM(){
console.log(document.getElementById('demo'))
}
}
一般来说我们可以使用document.getElementById(),获取上方的DOM元素,但是我们使用的是vue,是用来简化对DOM的操作的,我们亲自去操作DOM,就没有体现出vue的作用,所以要使用ref。
ref的使用
第一步:在需要操作的DOM节点使用ref打标识,标识名称随意
<h1 v-text="msg" ref="title"></h1>
<button @click="showDOM">点我输出上方的DOM元素</button>
第二步:使用$refs.标识名获取改元素的DOM节点
methods:{
showDOM(){
//console.log(document.getElementById('demo'))
console.log(this.$refs.title)
}
}
在组件上使用ref
如果在组件上使用ref,那么输出的是改组件的VueComponent实例对象
组件School:
<template>
<!--组件的结构,对应html代码-->
<div class="demo">
<h2>学校名称:{{name}}</h2>
<h2>学校地址:{{address}}</h2>
<button @click="showName">点我提示学校名</button>
</div>
</template>
<script>
export default {
// eslint-disable-next-line vue/multi-word-component-names
name:'School',
data(){
return {
name:'一中',
address:'广州'
}
},
methods: {
showName(){
alert(this.name)
}
}
}
</script>
<style>
/*组件的样式,对应css代码*/
.demo{
background-color: aqua;
}
</style>
打标识
<h1 v-text="msg" ref="title"></h1>
<button @click="showDOM">点我输出上方的DOM元素</button>
<School ref="sch"/>
使用$refs获取
methods:{
showDOM(){
//console.log(document.getElementById('demo'))
console.log(this.$refs.title)
console.log(this.$refs.sch)
}
}
效果: