vue ref引用dom元素以及子元素dom

在组件中每个dom元素都可以添加ref属性,即使是封装好的组件拿来用都可以为其添加ref属性,但是ref属性值在当前组件中不能被重复。如果重复了,会将最后一个相同ref属性值获取,也只操作最后一个,通过this.$refs.ref属性值操作dom

当前组件实现dom操作

<template>
      <div id="app">
          <p ref="bianse">app根元素</p>
          <button @click="bian">点击变色</button>
      </div>
</template>

<script>
export default {
    methods: { 
       bian(){
           //$refs指向的ref的元素属性值,$refs是一个对象,可以包含多个对象,属性是ref的值,对应的是ref值对应的dom元素。
           this.$refs.bianse.style.color="red"
       }
    },
}
</script>

使用ref操作子组件的dom或者数据

子元素son组件

<template>
      <div id="app">
          <p>{{message}}</p>
          <button @click="add">点击+1</button>
      </div>
</template>

<script>
export default {
    data() {
        return {
            message:0
        }
    },
    methods: { 
       add(){
           this.message+=1
       }
    }
}
</script>

父组件APP引用子组件dom。

<template>
      <div id="app">
          <button @click="bian">点击son组件数据切换</button>
          <Son ref="son"></Son>
      </div>
</template>

<script>
export default {
    data() {
        return {
            message:0
        }
    },
    methods: { 
        bian(){
            //直接操作子组件事件函数使message+1
            //this.$refs.son.add()
            //直接操作子组件属性使message+1
            this.$refs.son.message+=1
        }
    }
}
</script>
上一篇:React -- 组件的三大属性(state、props、refs)


下一篇:[原创]使用Visual Studio Macro调试VSPackage项目