ref与el

192 阅读1分钟
<div class="loogEl">
   <h1 @click="fn()" ref="h1ss">
     Lorem, ipsum
   </h1>
   <hello-world ref="halloword"></hello-world>
 </div>

el:拿到当前实例的dom,可以进行dom操作

注意:要在dom挂载完成之后(mounted)
  beforeMount () {
    console.log('this.$el:', this.$el) // this.$el: undefined
  },
  mounted () {
    console.log('this.$el:', this.$el)  // this.$el
    this.$el.style.color = 'red'
  },

ref:dom挂载完成之后(mounted)

 1ref 加在普通的元素上,用this.ref.name 获取到的是dom元素  
 **(跟el一样,拿到dom)**
 2ref 加在子组件上,用this.ref.name 获取到的是组件实例,可以使用组件的所有方法和变量。
 **注意**:操作dom,必须和el一起使用
 beforeMount () { 
    console.log(this.$refs.halloword.$el.style.color = 'blue'); //报错
  },
  mounted () {
    console.log(this.$refs.halloword.$el.style.color = 'blue');  //变色
  },
 3、如何利用 v-forref 获取一组数组或者dom 节点
 
 <h3 v-for="value in msg" ref="number">{{value}}</h3>
 
  data () {
    return {
      msg: ['one', 'two', 'three']
    }
  },
  
    mounted () {
    console.log(this.$refs.number);  //[h3, h3, h3]
  },

** 注意**:配合this.$nextTick使用也可以在created、beforemounted等里面用el、ref