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
相关推荐
逍遥德5 天前
Maven教程.02-基础-pom.xml 使用标签大全逍遥德5 天前
Maven教程.01- settings.xml 文件<profile>使用详解逍遥德5 天前
Maven教程.04-如何阅读Maven项目逍遥德5 天前
Maven教程.03-如何阅读pom.xml文件塔中妖5 天前
Windows 安装 Maven 详细教程(含镜像与本地仓库配置)成为你的宁宁5 天前
Jenkins 自动化部署前后端分离若依项目全攻略:涵盖环境配置、Maven/Node.js 工具安装、GitLab 项目协同,及前后端构建、服务器推送与代码更新验证全步骤没有bug.的程序员6 天前
依赖治理之巅:Maven 与 Gradle 依赖树分析内核、冲突判定博弈与工程自愈实战指南三无少女指南6 天前
Spring Boot项目中Maven编译参数source、target与release的区别及配置实践七夜zippoe6 天前
微服务架构下Spring Session与Redis分布式会话实战全解析何中应7 天前
从零搭建Maven私服(Nexus)