uniapp自定义返回事件(封装)

news/2024/10/18 21:24:26/

uniapp自定义返回事件

在我们使用uniapp时,我们导航栏一般都是自定义的,比如用uview框架的导航栏,那么返回事件通常会遇到以下几个问题

  • 返回事件前需要做一些额外的处理
  • h5项目刷新页面后返回失效
  • 返回按钮点击后到指定页面

如果只是监听返回按钮,可以通过onBackPress实现,但是很多时候为了开发起来维护方便,一般都是写一个导航栏组件统一管理,于是我这边简单封装了下导航栏组件。

在这里插入图片描述

核心代码如下:

javascript">  customBack (callback) {if (this.customUrl) {uni[this.pageType]({url:this.customUrl })return}const pages = getCurrentPages()if (callback) {callback()}else  {if(pages.length === 1) {history.back()}	else {uni.navigateBack()}}}
  • (参数)customUrl 自定义跳转路径
  • (参数)pageType 跳转类型,如navigateTo、redirectTo、switchTab
  • (参数)callback 回调函数,一般用于处理一些额外逻辑
  • (参数)isOverlay 这个是我根据自己的业务需求加的,本身导航栏会占位,部分页面需要不占位,下面代码中有这个参数。
  • getCurrentPages 获取页面栈,如果h5项目刷新后,将会被清除页面栈,这个时候如果要返回上一级,则需要调用浏览器的返回方法history.back()
  • sort插槽右侧按钮

在这里插入图片描述

使用起来也方便

  <navbar title="标题"/><navbar title="标题" custom-url="/pages/meu/index" page-type="switchTab"/><navbar title="标题"><view class="navbar-right" @click="saveEvent">自定义右侧按钮</view></navbar>

完整代码如下

  <template><u-navbar :title="title" :is-back='isBack' :class="isOverlay ? 'overlay' : ''" :custom-back='customBack'><template slot="right"><slot></slot></template></u-navbar></template><script>javascript">export default {props: {title: {type: String,default: ''},isBack: { // 是否显示返回按钮type: Boolean,default: true},isOverlay: { // 是否遮罩页面上(不占位)type: Boolean,default: false},customUrl: { // 自定义跳转地址type: String,default: ''},pageType: { // 跳转方式type: String,default: 'navigateTo'}},methods: {customBack (callback) {if (this.customUrl) {uni[this.pageType]({url:this.customUrl })return}const pages = getCurrentPages()if (callback) {callback()}else  {if(pages.length === 1) {history.back()}	else {uni.navigateBack()}}}}}</script><style lang="scss" scoped>.overlay{::v-deep {.u-navbar-fixed{background: transparent !important;}.u-navbar-placeholder{display: none;}}}</style>

http://www.ppmy.cn/news/1443400.html

相关文章

【2024系统架构设计】回顾历史,查缺补漏篇 ②

前言 hello,大家好: 💡💡💡 我们一起来备考软考高级系统架构设计师吧,本专栏提供综合知识、案例科目、论文(论点和部分示例范文)等内容,包括知识点总结和记忆小妙招哦。 🚀🚀🚀 可以减少资料查找和收集的时间,提高效率,我们一起集中精力学习干货吧! 💡…

机器学习day1

一、人工智能三大概念 人工智能三大概念 人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;和深度学习&#xff08;DL&#xff09; 人工智能&#xff1a;人工智能是研究计算代理的合成和分析的领域。人工智能是使用计算机来模拟&#xff0c;而不是人类…

stable diffusion 的controlNet 安装和使用

stable diffusion 安装controlNet需要先下载扩展 扩展地址 下载了扩展以后&#xff0c;需要下载相应的模型&#xff0c;每个模型大约1.45G,可以按需下载。 模型地址 如果下载速度太慢&#xff0c;可以考虑去liblib下载&#xff0c;但是是全量模型 liblib 模型下载完后&#…

k8s controller manager工作原理

Kubernetes的controller manager是Kubernetes组件之一&#xff0c;负责管理集群中的控制循环&#xff0c;确保资源处于预期状态。以下是controller manager的工作原理简述&#xff1a; Replication Controller: 确保每个pod副本 (replica) 都运行在指定的数量。 Node Controll…

软件设计师备考笔记(一):计算机系统知识

文章目录 一、计算机系统基础知识&#xff08;一&#xff09;计算机系统硬件基本组成&#xff08;二&#xff09;中央处理单元&#xff08;三&#xff09;数据表示&#xff08;四&#xff09;校验码 二、计算机体系结构&#xff08;一&#xff09;指令系统&#xff08;二&#…

光伏无人机巡检主要有些什么功能和特点?

随着科技的飞速发展&#xff0c;无人机技术已经渗透到多个行业领域&#xff0c;光伏产业便是其中之一。光伏无人机巡检&#xff0c;作为一种新兴的巡检方式&#xff0c;正在逐渐取代传统的人工巡检&#xff0c;为光伏电站的安全、高效运行提供了有力保障。那么&#xff0c;光伏…

2024深圳杯(东北三省)数学建模C题完整论文讲解(含完整python代码及所有残骸音爆位置求解结果)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024深圳杯&#xff08;东北三省数学建模联赛&#xff09;A题多个火箭残骸的准确定位完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊…

ELK技术介绍:背景、功能及应用场景全面解析

一、ELK概述 ELK是由Elasticsearch、Logstash和Kibana三个开源软件组成的日志管理解决方案&#xff0c;这一组合在近年来得到了广泛的关注和应用。ELK的出现&#xff0c;源于大数据和云计算技术的快速发展&#xff0c;以及对高效日志管理的迫切需求。 随着企业信息化程度…