uniapp小程序自定义tabBar,根据身份切换自定义tabBar

这篇具有很好参考价值的文章主要介绍了uniapp小程序自定义tabBar,根据身份切换自定义tabBar。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 对于导航页自定义tabBar,仍需要在pages.json中配置tabBar

"tabBar": {
    // 此设置方法小程序真机无效,应在app中隐藏原生tab
    // "custom": true,
    // "selectedColor": "#2196F3",
    "list": [{
      "pagePath": "pages/home/home",
      "text": "首页",
      "iconPath": "static/tab/home.png",
      "selectedIconPath": "static/tab/home-active.png"
    }, {
      "pagePath": "pages/notice/notice",
      "text": "公告",
      "iconPath": "static/tab/notice.png",
      "selectedIconPath": "static/tab/notice-active.png"
    }, {
      "pagePath": "pages/my/my",
      "text": "我的",
      "iconPath": "static/tab/my.png",
      "selectedIconPath": "static/tab/my-active.png"
    }]
  },

2. 在App.vue中的onShow生命周期中隐藏原生tabBar

onShow: function() {
      // 隐藏原生tabbar
      uni.hideTabBar({
        animation: false
      })
      console.log('App Show')
    },

但发现切换的时候有时还是会出现原生tabBar,于是在每一个导航页onShow生命周期中加上uni.hideTabBar({animation: false})来解决此问题

3. 在components下新建自定义组件文件,因为我是根据身份需要展示不同的tabBar,需建两个,这边仅展示一个为例

效果如下

uniapp小程序自定义tabBar,根据身份切换自定义tabBar

 

<template>
  <view class="tabbar">
    <view class="tab" v-for="(item,index) in tabbarList" :key="index" @click="navigatorTo(item.url)">
      <!-- 判断是否有点击,如果没有就不是激活样式,点击就是激活的样式 -->
      <image class="imgsize" v-if="item.type == 0" :src="current == index ? item.selectIcon : item.icon"
        mode="widthFix"></image>
      <view :class="current == index ?'active':'text'">{{item.name}}</view>
    </view>

  </view>
</template>

<script>
  export default {
    name: "tabbar",
    props: {
      current: {
        type: Number,
        default: 0, //默认第一个页面tabbar激活
      },
    },

    data() {
      return {
        tabbarList: [{
          type: 0,
          icon: '/static/tab/home.png',
          selectIcon: '/static/tab/home-active.png',
          name: '首页',
          url: '/pages/home/home',
        }, {
          type: 0,
          icon: '/static/tab/notice.png',
          selectIcon: '/static/tab/notice-active.png',
          name: '公告',
          url: '/pages/notice/notice',
        }, {
          type: 0,
          icon: '/static/tab/my.png',
          selectIcon: '/static/tab/my-active.png',
          name: '我的',
          url: '/pages/my/my',
        }]
      };
    },
    methods: {
      navigatorTo(e) {
        uni.switchTab({
          url: e,
        })
      },
    },
  }
</script>

<style lang="scss" scoped>
  .tabbar {
    position: fixed;
    bottom: 0;
    padding-bottom: constant(safe-area-inset-bottom);
    /* 兼容 iOS<11.2 */
    padding-bottom: env(safe-area-inset-bottom);
    /* 兼容iOS>= 11.2 */
    background-color: #FFFFFF;
    width: 100%;
    z-index: 1;
    box-sizing: border-box;
    box-shadow: 0rpx 0rpx 12rpx 2rpx rgba(0, 0, 0, 0.1);
    border-radius: 30rpx 30rpx 0rpx 0rpx;
    padding-top: 12rpx;
    display: flex;
    justify-content: space-around;
    align-items: center;

    .tab {
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .imgsize {
      width: 56rpx;
      height: 56rpx;
    }

    .text {
      margin-top: 4rpx;
      padding-bottom: 12rpx;
      font-size: 20rpx;
      color: #333333;
      line-height: 20rpx;
    }

    .active {
      margin-top: 4rpx;
      padding-bottom: 12rpx;
      font-size: 20rpx;
      color: #2196F3;
      line-height: 20rpx;
    }
  }
</style>

4. 导航页中使用文章来源地址https://www.toymoban.com/news/detail-513318.html

<template>
  <view>
    <!-- 根据身份展示不同的tabBar -->
    <userbar :current="current" v-if="role===1"></userbar>
    <tabbar :current="current" v-if="role===2"></tabbar>
    </view>
</template>
<script>
  export default {
    data(){
       return {
         current:0,  // 公告页面和我的页面根据需要传入对应的索引号
      }
    },
    onShow(){
      uni.hideTabBar({
        animation: false
      })
      this.current = 0   // 公告页面和我的页面根据需要传入对应的索引号
   }
}
</script>

到了这里,关于uniapp小程序自定义tabBar,根据身份切换自定义tabBar的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp配置了pages.json 的 tabbar 国际化,小程序切换语言没有实时切换

    如上图,按照uniapp官方文档配置了tabbar的国际化 但是微信小程序实时切换语言没有实时刷新 解决方案: 在App.vue中加入以下代码:   在onLaunch中执行方法即可

    2024年04月28日
    浏览(36)
  • uni小程序 自定义tabbars切换 闪动问题解决(通俗易懂)

    在小程序开发中,默认tabbar基本上是不能够满足我们的需求的,多数情况下都需要引入自定义的tabba, 但是在使用自定义tabbar的过程中就会遇到一些问题,例如切换闪动(由于tabbar页面跳转,组件重新创建导致)... 下面就看看怎么样去解决这个问题 其实很简单, 就是以组件

    2024年02月09日
    浏览(37)
  • 小程序Taro框架 自定义底部Tabbar,处理自定义Tab栏切换卡顿、闪烁

    最近在用Taro框架开发一个小程序,有一个自定义底部Tabbar的需求,最终效果如下  这页是我第一次接触自定义小程序底部Tabbar,所有第一选择必然是相看官方文档:微信小程序自定义 Tabbar | Taro 文档 ( 如果第一次做,请一定要仔细看这个文档 ) 按照文档正常配置app.confi

    2024年03月21日
    浏览(44)
  • uniApp开发小程序自定义tabBar底部导航栏+tabBar中间凸起自定义样式实现

            先看效果是否可以满足你们,如果可以满足你只要一步一步照着做绝对没有错。         本人技术不佳,研究了一整天,全网的大佬们写的博客看的晕头转向,避免大伙再走弯路,跟着我以下步骤一点一点来绝对可以实现。         最终效果图: (如果你

    2024年02月04日
    浏览(52)
  • 解决微信小程序 自定义tabBar 首次切换时候闪烁问题(实测)

    按照官方自定义tabBar: 配置信息 在 app.json 中的 tabBar 项指定 custom 字段,同时其余 tabBar 相关配置也补充完整。 所有 tab 页的 json 里需声明 usingComponents 项,也可以在 app.json 全局开启。 我的示例: 添加 tabBar 代码文件 在代码根目录下添加入口文件 custom-tab-bar :必须与pages在同

    2024年02月14日
    浏览(39)
  • 微信小程序使用uniapp自定义tabbar

    第一步:在pages.json里定义自己tabbar路径,定义的时候只需要写上页面路径即可  第二步:自定义tabbar页面,为了实现点击动作的动态效果,需要用到watch监听父组件传来的值的改变  自定义tabbar页面全部代码 注:该页面可以直接用组件的方式来放,因为uniapp支持easycom模式,

    2024年02月13日
    浏览(47)
  • 基于自定义组件实现微信小程序动态tabBar,根据不同用户角色显示不同底部tabBar,支持自由组合总数超过5个(更新版)

    背景 在开发小程序过程中,有个需求是,小程序底部的tabBar需要根据不同用户角色显示不同底部导航。此时就需要用到自定义底部导航 custom-tab-bar。 上次发文是组合显示4个底部tabBar导航,很多小伙伴评论说组合超过5个怎么办。他们的需求总数超过5个了。 现在我在这里更新

    2024年01月17日
    浏览(38)
  • uniapp开发微信小程序自定义tabbar

    第一步:在pages.json里定义自己tabbar路径,定义的时候只需要写上页面路径即可  第二步:自定义tabbar页面,为了实现点击动作的动态效果,需要用到watch监听父组件传来的值的改变  自定义tabbar页面全部代码 注:该页面可以直接用组件的方式来放,因为uniapp支持easycom模式,

    2024年02月11日
    浏览(41)
  • uniapp 微信小程序使用uview u-tabbar组件自定义tabbar

    1.在components文件下面新建TabBar.vue组件, 使用uview的u-tabbar组件进行二次封装; u-tabbar组件中value取当前匹配项的name, 一般从父组件传过来即可; 在u-tabbar-item标签内可以使用插槽 slot=\\\'inactive-icon\\\'(选中的图标)和slot=\\\'inactive-icon\\\'(未选中的图标)自定义图片样式 u-tabbar组件默认已经为i

    2024年02月13日
    浏览(74)
  • 只需3步,uniapp自定义微信小程序tabbar

    原生tabBar是相对固定的配置方式,可能无法满足所有场景,这就涉及到自定义tabBar。 但注意除了H5端,自定义tabBar的性能体验会低于原生tabBar。App和小程序端非必要不要自定义 没办法为了美,为了diy 1.在components目录下新建my-tabbar组件 2.my-tabbar.vue 文件内容如下 注意的是page

    2024年02月14日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包