defineExpose作用
暴露方法和数据
- 允许从模板或其他组件访问当前组件内部的方法和数据。
- 明确指定哪些方法和数据可以被外部访问,从而避免不必要的暴露。
增强安全性
- 通过显式声明哪些方法和数据可以被外部访问,防止意外修改内部状态。
- 提高组件的安全性,避免因误操作导致的问题。
提升可维护性
- 清晰地定义组件的边界,使其他开发者更容易理解和使用组件。
- 增强组件的可维护性,便于后续的开发和维护工作。
onMounted作用
DOM 操作
- 当你需要根据 DOM 的状态来执行某些操作时,可以在
onMounted钩子中进行。例如,设置某个元素的高度或宽度,或者初始化第三方插件。
异步请求
- 组件挂载后,通常会触发一些异步请求来获取数据填充到页面中。这些请求通常在
onMounted钩子中发起。
事件绑定
- 如果需要给 DOM 元素绑定事件监听器,那么
onMounted是一个合适的地方总结
defineExpose用于定义组件的公开 API,控制哪些方法和数据可以被外部访问。onMounted用于执行组件挂载完成后的一些初始化操作,如 DOM 操作、异步请求等。两者可以结合使用,以实现更安全、更高效的组件设计。在实际开发中,可以根据组件的具体需求来决定是否以及如何使用这两个特性。
示例
子组件定义:
defineExpose将name、age和show方法暴露给父组件
javascript<template> <view> 子组件 </view> </template> <script setup> import { ref } from 'vue'; // 声明一个响应式变量name,初始值为'张三' var name = ref('张三') // 声明一个响应式变量age,初始值为18 var age = ref(18) /** * 显示名称和年龄的方法 * @returns {string} 返回名称和年龄的字符串 */ var show = () => { return '名称' + name.value + ' 年龄' + age.value } // 导出name, age和show方法,以便父组件可以访问和调用 defineExpose({ name: name, age: age, show }) </script>
父组件定义
模板部分 (
<template>):
- 包含一个
bdqn-header组件,并通过ref属性将其引用赋值给student。- 三个
<view>元素分别显示student的name、age和调用show方法的结果。脚本部分 (
<script setup>):
- 引入
onMounted和ref函数。- 声明一个响应式变量
student,并初始化为null。- 在
onMounted钩子中打印student的值
javascript<template> <!-- 使用ref属性绑定student对象 --> <bdqn-header ref="student"></bdqn-header> <!-- 条件渲染学生的姓名 --> <view>{{student?.name}}</view> <!-- 条件渲染学生的年龄 --> <view>{{student?.age}}</view> <!-- 调用student对象的show方法 --> <view>{{ student?.show()}}</view> </template> <script setup> // 导入Vue的core功能,包括ref和onMounted import { onMounted, ref } from 'vue'; // 定义一个可变的student引用,初始值为null var student = ref(null) // 在组件挂载完成后执行回调函数 onMounted(() => { // 打印此时的student值,用于调试 console.log(student.value); }) </script>
uniapp使用defineExpose暴露和onMounted访问
小汤猿人类2024-09-01 21:55
相关推荐
学IT的周星星2 小时前
Maven 项目和 Maven Web 项目的异同点weixin_436525071 天前
Windows - Maven 安装到 IDEA 配置全流程Coding_Doggy1 天前
苍穹外卖是如何从0搭建一个标准的 Maven 多模块项目的?天黑请闭眼2 天前
Java:Maven下载依赖后,删除pom依赖坐标无法去除依赖siriuuus2 天前
Maven 核心概念及生命周期猫头虎2 天前
解决升级IDEA2025.2后,每次打开Maven项目爆红的问题:Windows和Mac解决方案ScriptBIN3 天前
管理和构建Java项目的工具--Mavenpengzhuofan4 天前
第10章 Maven百锦再4 天前
对前后端分离与前后端不分离(通常指服务端渲染)的架构进行全方位的对比分析5pace4 天前
【JavaWeb|第一篇】Maven篇