【UniApp】-uni-app-CompositionAPI应用生命周期和页面生命周期

news/发布时间2024/8/25 6:52:49

前言

  • 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-OptionAPI应用生命周期和页面生命周期
  • 那么了解完了uni-app-OptionAPI应用生命周期和页面生命周期之后,这篇文章来给大家介绍一下 uni-app-CompositionAPI应用生命周期和页面生命周期
  • CompositionAPI 是 Vue3.0 中的一个新特性,uni-app 也支持 CompositionAPI,所以我们就来看一下 uni-app-CompositionAPI应用生命周期和页面生命周期的写法
  • 首先不管三七二十一,先来新建一个项目

搭建演示环境

创建一个全新的项目:

然后在配置一下,微信小程序的 AppId,直接去之前的项目中拷贝一下即可,找到之前项目的 manifest.json 文件,然后选择微信小程序配置,复制一下即可。

  • 经过如上的这么一顿操作之后,就可以搭建完毕运行环境,与编码环境
  • 接下来就可以开始进行介绍 uni-app-CompositionAPI应用生命周期和页面生命周期内容了

步入正题

应用生命周期

如果想使用 CompositionAPI 的话,需要在 script 标签中添加 setup, 添加了 setup 之后就不是导出一个默认对象了,而是导出一个函数,将原来 App.vue 中的内容全部转换为函数定义,代码如下所示:

<script setup>onLaunch(() => {console.log('App Launch')})onShow(() => {console.log('App onShow')})onHide(() => {console.log('App onHide')})
</script>

改造完毕之后,我们就可以运行一下,看一下效果了,运行之后,可以看到控制台中报错了(我这里声明一下后面的启动都以微信小程序启动),如下图所示:

报错信息是 ReferenceError: onLaunch is not defined, 也就是说 onLaunch 这个函数没有定义,因为我们使用的是 CompositionAPI,那么我们就需要在 setup 函数中导入 onLaunch 函数,onLaunch 从哪里导入呢?从 @dcloudio/uni-app 中导入,当然如果说 onLaunch 需要导入那么其他的生命周期函数也需要导入,所以我们直接将所有的生命周期函数都导入进来,代码如下所示:

<script setup>import {onLaunch, onShow, onHide} from '@dcloudio/uni-app'onLaunch(() => {console.log('App Launch')})onShow(() => {console.log('App onShow')})onHide(() => {console.log('App onHide')})
</script><style>
</style>

然后运行一下,可以看到控制台中打印出来了我们的生命周期函数,如下图所示:

这个就是在 UniApp 中 CompositionAPI 的写法。

页面生命周期

页面生命周期的写法和应用生命周期的写法是一样的,只不过是在页面中使用,我们快速搭建一下环境吧,配置一下 tabBar:

"tabBar": {"color": "#7A7E83","selectedColor": "#3cc51f","borderStyle": "black","backgroundColor": "#ffffff","list": [{"pagePath": "pages/index/index","text": "首页"}, {"pagePath": "pages/account/account","text": "账号"}]
}

然后在 pages 目录下新建一个 account 目录,然后在 account 目录下新建一个 account.vue 文件,然后在 account.vue 文件中添加如下代码:

<template><view><text>账号</text></view>
</template><script setup>import {onLoad, onShow, onReady, onHide, onPullDownRefresh, onReachBottom} from '@dcloudio/uni-app'onLoad(() => {console.log("账号 onLoad");})onShow(() => {console.log("账号 onShow");})onReady(() => {console.log("账号 onReady");})onHide(() => {console.log("账号 onHide");})onPullDownRefresh(() => {console.log("账号 onPullDownRefresh");})onReachBottom(() => {console.log("账号 onReachBottom");})
</script><style>
</style>

index.vue 文件中添加如下代码:

<template><view><text>首页</text><view class="content"><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 1</view><view class="item">item 88</view><view class="item">item 99</view></view></view>
</template><script setup>import {onLoad, onShow, onReady, onHide, onPullDownRefresh, onReachBottom} from '@dcloudio/uni-app'onLoad(() => {console.log("首页 onLoad");})onShow(() => {console.log("首页 onShow");})onReady(() => {console.log("首页 onReady");})onHide(() => {console.log("首页 onHide");})onPullDownRefresh(() => {console.log("首页 onPullDownRefresh");})onReachBottom(() => {console.log("首页 onReachBottom");})
</script><style lang="scss" scoped>.item {width: 100%;height: 200rpx;}
</style>

配置 pages.json 文件中 pages 相关内容:

"pages": [{"path": "pages/index/index","style": {"navigationBarTitleText": "首页","enablePullDownRefresh" : true}},{"path" : "pages/account/account","style" : {"navigationBarTitleText" : "账号"}}
],

然后运行一下,我这里以一个视频的形式展示给大家,如下图所示:

总结

好,经过上面的介绍,我们就了解了 uni-app-CompositionAPI应用生命周期和页面生命周期的写法

最主要是就是要知道在使用 CompositionAPI 的时候,需要在 script 标签中添加 setup,然后在 setup 函数中导入生命周期函数,然后在生命周期函数中添加我们的代码即可。

要知道导入生命周期函数的时候,需要从 @dcloudio/uni-app 中导入,然后在 setup 函数中使用即可。

最后

大家好我是 BNTang, 一个热爱分享的技术的开发者,如果大家觉得我的文章对你有帮助的话,可以关注我的公众号 JavaBoyL,我会在公众号中分享一些IT技术和一些个人的见解,谢谢大家的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.liansuoyi.cn/news/45308136.html

如若内容造成侵权/违法违规/事实不符,请联系连锁易网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

第 375 场周赛(滑动窗口,区间合并)

使用差分的思想进行解决class Solution:def countTestedDevices(self, batteryPercentages: List[int]) -> int:diff = 0for x in batteryPercentages:if x > diff:diff += 1return diff class Solution:def getGoodIndices(self, variables: List[List[int]], target: i…

循环队列

一、循环队列 环形队列,有两个指针:头指针和尾指针。在队尾写入,移动尾指针;从队列头部读取,移动头指针。环形队列,其特殊性在于"环形", 内存空间可以不断重复使用,无需频繁分配和释放内存。通常,我们用一个固定长度的数组来实现循环队列。 示意图:1.初始化…

Netty源码学习8——从ThreadLocal到FastThreadLocal(如何让FastThreadLocal内存泄漏doge)

系列文章目录和关于我 一丶引入 在前面的netty源码学习中经常看到FastThreadLocal的身影,这一篇我们将从ThreadLocal说起,来学习FastThreadLocal的设计(《ThreadLocal源码学习笔记》) 二丶从ThreadLocal说起 ThreadLocal是JDK中实现线程隔离的一个工具类。实现线程隔离mayb…

2023-2024-1 20232315 《网络空间安全导论》第五周学习总结

一、教材学习内容总结 近一周我预习了第五章内容安全基础,了解了相关知识,知道了信息内容安全的威胁来源以及内容获取的主要工具——网络爬虫等内容。下面本章思维导图: 二、教材学习中的问题和解决过程 问题一:为什么一般的大搜索技术无法满足网络舆情监测与预警系统的需求…

Solidity基本语法学习4

文档: https://solidity-by-example.org/ 视频教程: https://www.youtube.com/watch?v=xv9OmztShIw&list=PLO5VPQH6OWdVQwpQfw9rZ67O6Pjfo6q-p说明: 本文内容: Function Modifier, Events, Constructor, Inheritance, Shadowing Inherited State Variables, Calling Paren…

面对每月更新的数据源

问题:表1的数据每月更新,填到表2时不能覆盖掉原有数据。 思路1: 数据不在原列上更新,而是新增一列。如下图,当月数据填在T列,下月数据填在U列,以此类推。 使用公式:=SUMIF(表1!A:A,D2,表1!B:B)表1更新前公式一列需要粘贴成值思路2: 在表1建一个新表,每月将数据以粘贴…

2023-2024-1 20232407 《网络》第5周学习总结

教材学习内容总结教材学习中的问题和解决过程 问题1:什么是sybil攻击? 问题1解决方案:询问chatgpt 问题2:除计算机技术外,还有哪些领域需要协同工作来更好地保证信息内容的安全 问题2解决方案:询问chatgpt基于AI的学习感悟 人工智能的发展也为内容安全提供了新的解决方案…

CentOS的GPT分区+LVM挂载

为突破MBR分区限制(最大卷:2T,最多4个主分区或3个主分区加一个扩展分区)常常以GPT分区方式(突破MBR 4个主分区限制,每个磁盘最多支持128个分区,支持大于2T的分区,最大卷可达18EB)新建分区并挂载,下面记录自己常用的GPT+LVM的方式挂载新的硬盘的方式。 1.查看硬盘标签…

RISC-V 环境搭建问题----1

在此记录一下搭建开源Vivado-risc-v项目时所遇到的一些问题本来已经弄好的差不多了,最后一看,下载的别人网盘的,版本落后了,只支持到vivado 2022.1....只好重新拉一下最新的,又踩雷无数。1.wls2 进行git clone时连接拒绝原文:Ubuntu20.4 WSL2 无法访问github终极解决方案…

linux基础知识

目录1.linux了解(1)界面基础2.文件管理(1)文件目录查看(2)文件目录管理ls :列出目录cd :切换目录pwd :显示目前所在的目录mkdir/rm:新建与删除文件夹(3)rz / sz:文件上传与下载(4)unzip: 文件解压与压缩(5)文件内容查看1)cat:由第一行开始显示文件内容2)nl:由…

深度解读DBSCAN聚类算法:技术与实战全解析

探索DBSCAN算法的内涵与应用,本文详述其理论基础、关键参数、实战案例及最佳实践,揭示如何有效利用DBSCAN处理复杂数据集,突破传统聚类限制。关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验…

Markdown编辑器

Markdown编辑器 Typora a markdown editor, markdown reader. 官网下载地址

Bounded Value

Bounded Value####################QQ 3087438119

汽车传感器类型杂谈

汽车传感器类型杂谈 在某种程度上,车辆传感器是车辆的感觉器官。作为电子管理系统的基本组成部分,它们必须记录物理或化学变量,并将其转换为电信号… 目录 •车辆传感器的类型 o 1.位置传感器(距离/角度传感器)- o 2.速度和速度传感器 o 3.加速度传感器 o 4.温度传感器 o …

触摸屏的“坎坷成长史”

触摸屏的“坎坷成长史” 2023-04-30 18:25智次方 资料来源:中兴文档 作者:中兴文档 物联网智库 转载导读触摸屏的历史,比你想象中的要更“沧桑”。 我们每个人都会在闲暇之余玩手游、刷微博、短视频或者是用pad追个剧。文档君也不例外,每晚睡前必刷手机。手指在小小的屏幕…

自组织临界状态

多种地震模式的学术思想百年进化的总趋势是由震源到动力系统。在地球系统科学框架下,基于五十年来大地测量学对大陆变形的精确观测和动力学的初步研究,以及对地球物理学、地质学、岩石力学、复杂动力学系统理论等的交叉研究,追寻了由地球形成至大陆现今地壳运动的演化进程,…

Netty内置的http报文解码流程

netty解码 netty通过内置处理器HttpRequestDecoder和HttpObjectAggregator对Http请求报文进行解码之后,Netty会将Http请求封装成一个FullHttpRequest实例,然后发送给下一站。Netty内置的与Http请求报文相对应的类大致有如下几个: (1)FullHttpRequest:包含整个Http请求的信…

Unicode编码解码

一、Unicode概述 Unicode是一种字符编码标准,旨在解决不同字符集之间的兼容性问题。它为全球所有语言提供了一种统一的编码方式,使得各种字符能够在计算机系统中正确显示和处理。Unicode字符集包含了世界上几乎所有的字符,包括中文字符、英文字符、数字、特殊符号等。 Unico…

【项目学习】谷粒商城学习记录5 - 检索服务

【项目学习】谷粒商城学习记录5 - 检索服务1、搭建页面环境search模块添加thymeleaf依赖<!-- thymeleaf --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </depe…
推荐文章