当前位置: 首页 > news >正文

Vue3学习(组合式API——ref模版引用与defineExpose编译宏函数)

目录

一、ref模版引用。

(1)基本介绍。

(2)核心基本步骤。(以获取DOM、组件为例)

(3)案例:获取dom对象演示。

<1>需求:点击按钮,让输入框聚焦。

(4)案例:获取组件实例内的属性和方法。(defineExpose编译宏函数)

二、ref模版引用与defineExpose编译宏函数小结。


一、ref模版引用。

(1)基本介绍。
  • ref 模板引用是 Vue 提供的直接操作 DOM 或子组件的工具。
  • 通过ref标识获取页面中真实的dom对象或者组件实例对象,从而就可以调用dom里面的属性和方法、组件内的属性和方法
  • 在 Vue3 组合式 API 中,ref 模板引用是用于在 JavaScript 中直接获取 DOM 元素或子组件实例引用的机制
(2)核心基本步骤。(以获取DOM、组件为例)
  1. 使用 ref 函数创建一个(ref对象)响应式引用(如 const inputRef = ref(null))。其中初始值通常设为 null(表示无引用)。
  2. 通过 ref 指令将变量与 DOM 元素或子组件关联。(如 <input ref="inputRef" /><ChildComponent ref="childRef" />)。这一步就是通过ref标识绑定ref对象到标签
  3. 模板渲染完成后!!ref 变量会自动指向对应的 DOM 元素或子组件实例。可在 onMounted 钩子(生命周期函数)或其他逻辑中使用。
(3)案例:获取dom对象演示。
<1>需求:点击按钮,让输入框聚焦。
  • 代码示例。
<script setup>
//ref模版引用
import {onMounted, ref} from "vue";
//1.调用ref函数,生成一个ref对象
const input = ref(null)//使用生命周期钩子:onMounted
onMounted(() => {//可以在页面渲染完成后,输入框自动聚焦/*input.value.focus()*/
})const inputFocus = () =>{console.log(input.value)//3.通过ref对象.value即可访问绑定到的元素(必须渲染完成后才能拿到)input.value.focus()
}
</script><template><div>
<!--    2.通过ref标识,进行绑定 --><input ref="input" type="text"><button @click="inputFocus" style="margin-left: 10px">点击让输入框聚焦</button></div>
</template><style scoped>
</style>
  • 效果。


(4)案例:获取组件实例内的属性和方法。(defineExpose编译宏函数)
  • 默认情况下:<script setup>语法糖下组件内部的属性和方法是不开放给父组件访问的!


  • 想在父组件访问到可使用 defineExpose 编译宏指定属性、方法允许访问!!
  • App.vue代码示例。
<script setup>
//引入子组件
import Test from "./components/Test.vue";
//ref模版引用
import {ref} from "vue";
//1.调用ref函数,生成一个ref对象
const testRef = ref(null)
const getTest = () => {console.log(testRef.value)
}
</script><template><div><h1>父组件App.vue</h1><div class="test"><!--    2.通过ref标识,进行绑定 --><Test ref="testRef"></Test><button @click="getTest">获取组件内部属性和方法</button></div></div>
</template><style scoped>
.test {border: 1px solid #000;padding: 10px;
}
</style>
  • Test.vue代码示例。
<script setup>
const count = 999
const sayHi = () =>{console.log('打招呼')
}
defineExpose({count,sayHi
})
</script><template><div><h2>我是用于测试的组件</h2></div>
</template><style scoped></style>
  • 页面渲染效果。


  • 父组件中通过ref模版引用获取组件实例并使用组件内部的属性和函数




二、ref模版引用与defineExpose编译宏函数小结。

  1. 获取ref模版引用的时机是:组件挂载完毕之后!
  2. defineExpose编译宏函数的作用:显示暴露组件内部的属性和方法(函数)

相关文章:

  • Stacking超参数调优:网格搜索与随机搜索的实战指南
  • 【软考中级软件设计师】进程管理
  • 如何深入学习MATLAB的高级应用?
  • StreamCap v0.0.1 直播录制工具 支持批量录制和直播监控
  • 注册表设置windows背景护眼色
  • 【React Fiber 架构详解】
  • FreeRTOS的学习记录(任务创建,任务挂起)
  • 计算机操作系统概要
  • 电子电路:什么是色环电阻器,怎么识别和计算阻值?
  • Windows系统永久暂停更新操作步骤
  • c++从入门到精通(五)--异常处理,命名空间,多继承与虚继承
  • vscode vue 项目 css 颜色调色版有两个
  • java中的包机制
  • MongoDB聚合查询:从入门到精通
  • 实例化异常(InstantiationException)详解
  • (面试)View相关知识
  • STM32F103定时器1每毫秒中断一次
  • 如何 naive UI n-data-table 改变行移动光标背景色
  • Web3开发工具与框架全解析:从入门到实战
  • 角点特征:从传统算法到深度学习算法演进
  • 纽约市长称墨海军帆船撞桥已致2人死亡,撞桥前船只疑似失去动力
  • 朱雀二号改进型遥二运载火箭发射成功
  • 浙江省委金融办原副主任潘广恩被“双开”
  • 王伟妻子人民日报撰文:81192,一架永不停航的战机
  • 特朗普再提“接管”加沙,要将其变为“自由区”
  • 阿里上季度营收增7%:淘天营收创新高,AI产品营收连续七个季度三位数增长