vue3中标签的 ref 属性

在 Vue 3 中,ref 是一个强大的特性,用于处理组件和 DOM 元素的引用。它有两个主要的应用场景:一是在模板中引用 DOM 元素,二是在 Vue 组件中引用子组件实例。

1. 在模板中使用 ref 引用 DOM 元素

  • 目的:直接访问和操作 DOM 元素。
  • 用法:

在模板中的 DOM 元素上添加 ref 属性:

<template>
  <div ref="myDiv">Hello, World!</div>
  <button @click="changeText">Change Text</button>
</template>

在 setup 函数中访问该元素:

<script setup>
import { ref, onMounted } from 'vue';

const myDiv = ref(null);

onMounted(() => {
  if (myDiv.value) {
    myDiv.value.textContent = 'Text Changed!';
  }
});

function changeText() {
  if (myDiv.value) {
    myDiv.value.textContent = 'New Text!';
  }
}
</script>

说明:

  • ref=“myDiv” 在模板中为 DOM 元素 div 添加一个引用标识符。
  • myDiv 是一个响应式的 ref 对象,其 .value 属性包含实际的 DOM 元素。
  • 在 onMounted 钩子中,你可以确保 DOM 元素已经挂载,然后通过 myDiv.value 访问并修改它的内容。

2. 引用子组件实例

  • 目的:访问子组件的方法或属性。
  • 注意:子组件需要暴露一些东西。要让父组件访问子组件的属性或方法

父组件

<template>
  <ChildComponent ref="childRef" />
  <button @click="callChildGreet">Call Child Greet</button>
</template>

<script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';

const childRef = ref(null);

function callChildGreet() {
  if (childRef.value) {
    childRef.value.greet();
  }
}
</script>

子组件

<template>
  <div>
    <p>Child Component</p>
  </div>
</template>

<script setup>
import { defineExpose } from 'vue';

function greet() {
  console.log('Hello from child!');
}

// 使用 defineExpose 暴露方法
defineExpose({
  greet
});
</script>

在这个例子中,ChildComponent 通过 defineExpose 暴露了 greet 方法,父组件可以通过 ref 引用调用该方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

x-z-y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值