vue3基础:模板引用(ref属性的使用)

本文介绍了在Vue中使用时,如何通过ref进行DOM元素操作以及父子组件间的通信。特别强调了组件的默认私有性质,以及如何通过defineExpose进行数据暴露。
摘要由CSDN通过智能技术生成
DOM上的ref
<script setup>
import { ref, onMounted } from 'vue'
// 声明一个 ref 来存放该元素的引用
// 必须和模板里的 ref 同名
const inputRef= ref(null)
const footerRef = ref(null);
onMounted(() => {
  inputRef.value.focus(); // 输入框聚焦
  console.log(footerRef.value); // 打印该Dom
})
</script>
<template>
  <input ref="inputRef"/>
  <div ref="footerRef"></div>
</template>
组件上的ref

<script setup> 的组件是默认私有的:一个父组件无法访问到一个使用了 <script setup> 的子组件中的任何东西,除非子组件在其中通过 defineExpose 宏显式暴露:

// 子组件中
<script setup>
const title = ref('ALL IS WELL');
const changeName = name =>{
	title.value = name;
}
defineExpose(['title','changeName']);
</script>
<template>
  <div>子组件</div>
</template>


// 父组件
<script setup>
import { ref, onMounted } from 'vue'
import AsideMenu from './AsideMenu.vue'
const asideMenuRef= ref(null)
onMounted(() => {
  console.log(asideMenuRef.value.title); // "ALL IS WELL"
  asideMenuRef.value.changeName('new title'); // 子组件中的title值由"ALL IS WELL "变成了"new title"
})
</script>
<template>
  <AsideMenu ref="asideMenuRef" />
</template>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值