uniapp公用返回组件

uniapp写一个公用的头部组件,包含home和返回。

  1. 页面中的引用
    在这里插入图片描述
    2.在components文件夹下,新建一个navBar.vue
<template><view class="view-wrap"><view :style="{ height: barHeight }"></view><view class="nav-bar-wrap" :style="{ background: background }"><view class="status-bar" :style="{ height: statusHeight }"></view><view class="nav-bar" :style="{ padding: menuGap, gap: menuGap, height: menuHeight }"><view class="left" v-if="back":style="{ width: menuWidth, height: menuHeight, lineHeight: menuHeight }"><uni-icons type="arrow-left" size="20" :color="backColor" @click="handleBack"></uni-icons><uni-icons type="home-filled" size="20" :color="backColor" @click="handleHome"></uni-icons></view><view v-else:style="{ width: menuWidth, height: menuHeight, lineHeight: menuHeight }"></view><view class="logo-block" v-if="type == 'icon'"><image class="logo"src="https://img.js.design/assets/img/63eef16e94031f91576975f7.png#6f1b14d0e35a1527a5a6621e0b5125a8"></image></view><view :style="{ color: backColor, fontSize: titleFontSize }" v-if="type == 'title'">{{ title }}</view><view v-if="type == 'slot'" class="container" v-else><slot></slot></view><view class="right" :style="{ width: menuWidth, height: menuHeight }"></view></view></view></view>
</template><script>const {windowWidth,statusHeight,menuGap,menuWidth,menuHeight} = getApp().globalDataexport default {props: {background: {type: String,default: '#ffffff'},backOption: {default: false,type: Boolean},back: {type: Boolean},type: {type: String,default: 'title'},title: {type: String,default: ''},backColor: {type: String,default: '#000'},titleFontSize: {type: String,},},data() {return {barHeight: '32px',menuGap: '7px',menuWidth: '0px',menuHeight: '32px',statusHeight: '7px',borderRadius: '4px',keyWord: '',};},mounted() {this.statusHeight = statusHeight + 'px'this.menuGap = menuGap + 'px'this.menuWidth = menuWidth + 'px'this.menuHeight = menuHeight + 'px'this.borderRadius = menuHeight / 2 + 'px'this.barHeight = statusHeight + menuHeight + menuGap * 2 + 'px'uni.setStorageSync('barHeight', this.barHeight)},computed: {barWidth() {if (this.back) {return windowWidth - menuWidth - menuGap * 4 - 26 + 'px'} else {return windowWidth - menuWidth - menuGap * 3 + 'px'}}},methods: {//处理返回handleBack() {let that = thislet pages = getCurrentPages();let currPage = pages[pages.length - 1]; //当前页面let prevPage = pages[pages.length - 2];uni.navigateBack({delta: 1,success: function(e) {if (that.backOption) {let page = getCurrentPages().pop();if (page == undefined || page == null) return;page.onLoad();}}})uni.$emit('back')},handleHome() {uni.switchTab({url: '/pages/index/index'})},}}
</script><style lang="scss" scoped>.view-wrap {position: relative;}.nav-bar-wrap {position: fixed;top: 0;z-index: 99;width: 100%;left: 0;right: 0;// box-shadow: 0px 3px 6px 0px rgba(216, 216, 216, 0.16);.nav-bar {display: flex;justify-content: space-between;align-items: center;box-sizing: content-box;.left {// width: 26px;// width: 79px;border: 0.5px solid rgba(241, 241, 241, 1);border-radius: 30px;// height: 30px;// line-height: 30px;flex-shrink: 0;display: flex;justify-content: space-between;padding: 0 13px;box-sizing: border-box;// text-align: center;background-color: rgba(255, 255, 255, 0.8);}.logo-block {// margin-left: 45%;}.logo {width: 34.14px;height: 40.48px;}.container {}.right {flex-shrink: 0;}}}
</style>
  1. 在App.vue中设置全局变量
<script>export default {globalData: {},onLaunch: function() {this.initBounding();},onHide: function() {},methods: {initBounding() {const {windowWidth,windowHeight,statusBarHeight} =uni.getSystemInfoSync();let menuGap = 7;let menuWidth = 0;let menuHeight = 32;let statusHeight = 7;// #ifdef MPconst {top,left,right,width,height} =uni.getMenuButtonBoundingClientRect();menuGap = windowWidth - right;menuWidth = width;menuHeight = height;statusHeight = top - menuGap;// #endif// #ifdef APP-PLUSstatusHeight = statusBarHeight;// #endifthis.globalData.windowWidth = windowWidth;this.globalData.windowHeight = windowHeight;this.globalData.statusHeight = statusHeight;this.globalData.menuGap = menuGap;this.globalData.menuWidth = menuWidth;this.globalData.menuHeight = menuHeight;},},};
</script><style lang="scss">@import "@/common/index.scss";@import "@/common/common.scss";// 设置整个项目的背景色page {background: #F4F4F4;//font-family: "PingFang SC", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important;font-family: "Source Han Sans CN", "Helvetica Neue", "Helvetica", "Arial", sans-serif;}
</style>
  1. 在main.js中注册全局组件
import App from './App'
import {formatImage,formatPrice,validatePhoneNumber,validateIDCard} from "@/utils/index.js"
import store from './store'// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
Vue.config.productionTip = falseVue.prototype.formatImage = formatImage
Vue.prototype.formatPrice = formatPrice
Vue.prototype.validatePhoneNumber = validatePhoneNumber
Vue.prototype.validateIDCard = validateIDCard
Vue.prototype.$store = storelet onFun = uni.$on;
uni.$on = (eventName,obj) =>{
try {
uni.$off(eventName);
} catch (error) {}
onFun(eventName,obj);
}App.mpType = 'app'
const app = new Vue({store,...App
})
app.$mount()
// #endif// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {const app = createSSRApp(App)// 注册全局组件for (let key in components) {app.component(key,components[key])}return {app}
}
// #endif

效果图如下
在这里插入图片描述
可以返回上一页和home页,也可以配置自己喜欢的颜色。

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

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

相关文章

web前端之vue一键部署的shell脚本和它的点.bat文件、海螺AI、ChatGPT

MENU 前言vite.config.ts的配置deploy文件夹的其他内容remote.shpwd.txtdeploy.bat 前言 1、在src同级新建deploy.bat文件&#xff1b; 2、在src同级新建deploy文件夹&#xff0c;文件夹中新建pwd.txt和remote.sh文件&#xff1b; 3、配置好后&#xff0c;直接双击deploy.bat文…

Flat Ads:轻松玩转Kwai广告,开启全球营销新篇章

在当今数字化时代,短视频平台已成为人们生活中不可或缺的一部分。其中,快手旗下的一款海外短视频应用——Kwai 在海外新兴的拉美、中东、东南亚等多个市场迅速崛起并赢得了广大用户的喜爱。 作为全球头部短视频平台,Kwai 已遍布世界30多个国家,月活超过10亿,APP下载量位居拉美、…

怎么给软件做数字证书签名?

要想让软件获得身份并让计算机识别软件发布者就需要申请数字证书&#xff0c;CA机构严格实名认证后签发的数字证书就可以对指定的软件签名使用。 代码签名是使用数字证书对软件、固件、脚本和可执行文件进行签名的过程&#xff0c;旨在向最终用户和客户保证代码的完整性和真实…

【深度学习驱动流体力学】剖析流体力学可视化paraview原理

目录 1.paraview版本2.配置过程检查插件库文件配置 ParaView 环境变量启动 ParaView 并检查插件3.可视化测试插件功能 3.加载数据进行可视化第一步: 导入案例第二步:查看当前目录未更新前的内容第三步:使用 blockMesh 命令生成腔体案例的网格第四步:运行仿真icoFoam第五步:使用…

短剧APP开发,探索短剧市场的新机遇

近几年&#xff0c;短剧市场得到了繁荣发展&#xff0c;随着短剧的快速发展&#xff0c;短剧APP也得到发展&#xff0c;受到了越来越多用户的喜欢。通过短剧APP&#xff0c;为大众带来多样、高质量的短剧内容。对于影视创作者来说&#xff0c;短剧APP在线观看系统的开发也将成为…

安装ps提示vcruntime140.dll丢失的多种有效的解决方法分享

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到vcruntime140.dll”。这个错误通常出现在运行某些程序时&#xff0c;特别是ps这样的图像处理软件。那么&#xff0c;如何解决这个错误呢&#xff1f;小编将为您详细介绍打开提示ps找…

【车载音视频AI电脑】全国产海事船载视频监控系统解决方案

海事船载视频监控系统解决方案针对我国快速发展的内河航运、沿海航运和远洋航运中存在的航行安全和航运监管难题&#xff0c;为船舶运营方、政府监管部门提供一套集视频采集、存储、回放调阅为一体的视频监控系统&#xff0c;对中大型船舶运行中的内部重要部位情况和外部环境进…

Windows的hosts文件中配置域名——在host文件中添加域名与IP的映射关系

Windows配置域名解析——在hosts文件中添加映射关系 要配置域名解析&#xff0c;步骤如下&#xff1a; 首先选中Windows的hosts文件——即C:\Windows\System32\drivers\etc&#xff0c;右键属性&#xff0c;在属性对话框中选中“安全”选项卡&#xff0c;点击“编辑”按钮&…

甘特图如何画以及具体实例详解

甘特图如何画以及具体实例详解 甘特图是一种常见的项目管理工具又称为横道图、条状图(Bar chart)。是每一位项目经理和PMO必须掌握的项目管理工具。甘特图通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。但是多项目经理和PMO虽然考了各种证…

Maya 白膜渲染简单教程

零基础渲染小白&#xff0c;没关系&#xff0c;一篇超简单教程带你学会渲染白膜。 先打开Maya&#xff0c;看看面板有没有渲染器&#xff0c;这里以Arnold为主。 要是没有这个&#xff0c;就去找插件管理器&#xff0c; Arnold的是mtoa&#xff0c;在搜索栏搜&#xff0c;然后把…

未来科技:Web3如何重塑物联网生态系统

随着Web3技术的崛起&#xff0c;物联网&#xff08;IoT&#xff09;的发展正迎来一场深刻的变革。本文将深入探讨Web3如何重塑物联网生态系统&#xff0c;从技术原理到应用实例&#xff0c;全面解析其对未来科技发展的影响和潜力。 1. Web3技术简介与发展背景 Web3技术是建立在…

用小频谱仪观察收音机的本振

我找了一颗中周&#xff0c;想搭建一个几百khz的振荡电路&#xff0c;类似中波的本振&#xff0c;但是搭建了却看不到任何起振的波形。 遂想先看看已经装调好的中波收音机的本质波形是怎么样的&#xff1f; 用杜邦线加上一个夹子。把线夹到小频谱的天线杆上面。 取信号位置可…

windows实现python串口编程

一、windows安装python Welcome to Python.org 根据windows是64位找到对应的版本下载 下载完后直接安装即可&#xff01; 打开cmd查看python版本 $ python --version #查看版本 二、串口编程 1、安装pyserial库 pyserial是Python中的一个库,用于处理串口通信。 cmd…

ARM32开发——中断

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 中断概念中断分类中断触发条件 中断概念 中断是计算机系统中的一种机制&#xff0c;用于响应外部事件或内部事件,它可以使单片机暂…

former系列在时间序列预测任务上的研究综述

总&#xff1a;基于Transformer的LSTF解决方案 现有基于Transformer的LSTM解决方案设计要素总结如下&#xff1a; 从图中可以看出&#xff0c;Transformer在时序中应用具体包含以下几个步骤&#xff1a; 1&#xff09;时序分解&#xff1a;对于数据处理&#xff0c;TSF中0均…

极速查询:StarRocks 存算分离 Compaction 原理 调优指南

作者&#xff1a;丁凯&#xff0c;StarRocks TSC member/镜舟科技云原生技术负责人 StarRocks 在数据摄入过程中&#xff0c;每次操作都会创建一个新的数据版本。在查询时&#xff0c;为了得到准确的结果&#xff0c;必须将所有版本合并。然而&#xff0c;随着历史数据版本的累…

关于 MySQL 5.7 升级 8.0 时 INT 显示问题分析

本案例中的客户是从 MySQL 5.7.36 升级到 MySQL 8.0.35&#xff0c;升级完成后业务反馈表结构有变化&#xff0c;升级前某个表的字段数据类型为 INT(10)&#xff0c;升级后变成了 INT&#xff0c;客户咨询有什么影响没有&#xff1f; 作者&#xff1a;张昊&#xff0c;DBA&…

JavaScript日期对象、DOM节点操作(查找、增加、克隆、删除)

目录 1. 日期对象2. DOM节点操作2.1 查找节点2.2 增加节点2.3 克隆节点2.4 删除节点 1. 日期对象 实例化日期对象&#xff1a; 获取当前时间: new Date()获取指定时间: new Date(2023-12-1 17:12:08) 日期对象方法: 方法作用说明getFullYear()获得年份获取四位年份getMonth…

logback-spring.xml 小记

为什么不用logback.xml 名字 加载顺序:logback.xml>application.yml>logback-spring.xml 使用xml中使用到配置文件属性时,就会报错 为什么logback中记录不到运行时报错 logback获取不到堆栈错误 解决办法:在全局错误出使用log.error()指定输出 为什么打印不出来myba…

“首秀”欧洲杯,海信冰箱欧洲市占率居国产品牌首位

随着欧洲杯的火热开赛&#xff0c;挑灯夜战、观看球赛的时刻已经来临。此时&#xff0c;你需要何物相伴&#xff1f;是打开冰箱&#xff0c;取出真空腌制的食材&#xff0c;亲手烹饪一场观赛盛宴&#xff1f;还是取出极致保鲜的荔枝、樱桃&#xff0c;一边观赛一边品味&#xf…