uni-app动态配置TabBar

之前我们公司要用uni-app开发一个新项目,要求是根据登录账号的权限动态展示tabBar。tabbar中的icon也使用的是网络图片,通过调用接口获得。总结一下配置的方法。

配置tabbar的几种方法:

一、pages.json中配置

一般来说,tabBar是在pages.json中配置。具体可参考uni-app官方文档 地址可点击

常见好用,但无法满足我们动态配置tabbar文字和图片的需求。

二、使用custom-tab-bar内置组件

这个组件也是根据pages.json中的信息生成的tabbar,可以支持更好的css,但是看了一下,平台只支持H5,兼容性较差。 文档地址 可以看一下文档参考。

三、uni.setTabBarItem方法

这个方法可以动态设置tabbar。参数如下:

一开始我们采用的是这个方法,说实话这个方法挺好用的。 在用户登陆后获得对应权限,调用uni.setTabBarItem,用visible和iconPath确定底部的导航栏的每一项是否展示以及图标。 文字、图标、是否可使都可以配置,包括文字的颜色什么的,结果真机测试的时候发现图标不展示,后面发现文档写着呢,iconPath这个属性除了微信小程序 2.7.0+、支付宝小程序支持网络图片,其他平台都不支持。如果有人只是单纯配置一下权限,icon图片放在本地的,用这个方法还是比较合适的。我们除了权限,还做了皮肤功能,图标经常改来改去,不方便经常一直往本地塞图标,所以这个方法只能忍痛放弃了。

四、uview的tabbar组件

其实使用uview之类的组件库的组件和自己写组件也是比较类似的,这里使用了uview的组件,也省去了一些样式的编写。使用组件,也不代表pages.json的tabbar不用配置,写还是要写的,把所有的都写进去,但是可以不用配图标,然后使用uni.hideTabBar()方法将原生的tabbar隐藏。

它的主要优点是可以自定义图标,包括网络图片。

uview的tabbar文档链接

我们的做法是,基于uview的tabbar,写一个公用的组件。在用户登录后调用接口获取当前权限以及图标url,生成一个u-tabbar-item的list,使用uni.setStorage方法存在本地,在公用组件中获取list,并渲染,其他需要用到底部导航栏的页面引入这个组件。

js 复制代码
<template>
  <view class="my-tabbar">
    <u-tabbar
      :value="value"
      @change="changeTab"
      :fixed="true"
      :placeholder="false"
      :safeAreaInsetBottom="false"
      :activeColor="color"
    >
      <u-tabbar-item v-for="item in list" :key="item.key" :text="item.text">
        <image
          v-if="item.selectedIconPath"
          class="icon"
          slot="active-icon"
          :src="item.selectedIconPath"
        ></image>
        <image class="icon" slot="inactive-icon" :src="item.iconPath"></image>
      </u-tabbar-item>
    </u-tabbar>
  </view>
</template>

在methos中有一个changeTab方法,使用uni.switchTab切换tabbar。这样效果会好一些。虽然第一次进去还是会闪一下,不过问题不大,没有客户提就不用改了。

相关推荐
yzzzzzzzzzzzzzzzzz21 分钟前
初识javascript
前端·javascript
excel1 小时前
硬核 DOM2/DOM3 全解析:从命名空间到 Range,前端工程师必须掌握的底层知识
前端
专注API从业者9 小时前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
大数据·运维·前端·数据挖掘·自动化
烛阴9 小时前
TypeScript高手密技:解密类型断言、非空断言与 `const` 断言
前端·javascript·typescript
样子201810 小时前
Uniapp 之renderjs解决swiper+多个video卡顿问题
前端·javascript·css·uni-app·html
Nicholas6810 小时前
flutterAppBar之SystemUiOverlayStyle源码解析(一)
前端
黑客飓风11 小时前
JavaScript 性能优化实战大纲
前端·javascript·性能优化
emojiwoo12 小时前
【前端基础知识系列六】React 项目基本框架及常见文件夹作用总结(图文版)
前端·react.js·前端框架
fakaifa12 小时前
点大餐饮独立版系统源码v1.0.3+uniapp前端+搭建教程
小程序·uni-app·php·源码下载·点大餐饮·扫码点单
张人玉12 小时前
XML 序列化与操作详解笔记
xml·前端·笔记