vue笔记之ref用法

134 阅读1分钟
一,可以获取dom节点

使用方法:this.$refs.自定义类名

<template>
  <div id="app">
    <div ref="domNode">我是一个div</div>
    <button @click="handleClickDom">点击获取dom节点</button>
  </div>
</template>

<script>
export default {
  methods: {
    handleClickDom() {
      console.log(this.$refs.domNode)
      // <div>我是一个div</div>
    }
  }
};
</script>
二,获取子组件中的data

使用方法:this.$refs.自定义类名.子组件data数据

-------------------子组件---------------------
<template>
  <div>
      {{ detailData }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      detailData: "vue3.0"
    }
  }
}
</script>

-------------------父组件----------------------
<template>
  <div id="app">
    <detail ref="child"><detail/>
    <button @click="handleClickDetail">获取detail组件中的值</button>
  </div>
</template>

<script>
import detail from "./components/detail.vue";

export default {
  components: {
    detail
  },
  data() {
    return {}
  },
  methods: {
    handleClickDetail() {
      console.log(this.$refs.child.detailData)
    }
  }
};
</script>
三,调用子组件的方法

使用方法:this.$refs.自定义类名.子组件方法名

-------------子组件------------
<template>
  <div>
  </div>
</template>

<script>
export default {
  methods: {
    click() {
      console.log("我是子组件方法,我被调用了!")
    }
  }
}
</script>

-------------父组件------------
<template>
  <div id="app">
    <detail ref="child"><detail/>
    <button @click="handleClickDetail">按钮</button>
  </div>
</template>

<script>
import detail from "./components/detail.vue";

export default {
  components: {
    detail
  },
  data() {
    return {}
  },
  methods: {
    handleClickDetail() {
      this.$refs.child.click();
    }
  }
};
</script>