微信小程序不同角色显示不同tabar

在这里插入图片描述
在这里插入图片描述
1、首先创建组件(要与pages同级)
在这里插入图片描述
2、custom-tab-bar 文件夹下的 代码

index.wxml

<cover-view class="tab-bar">
  <cover-view class="tab-bar-border"></cover-view>
  <cover-view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
    <cover-image class="cover-image" src="{{selected === index ? item.selectedIconPath : item.iconPath}}"></cover-image>
    <cover-view class="cover-view" style="color: {{selected === index ? selectedColor : color}}">{{item.text}}</cover-view>
  </cover-view>
</cover-view>

一定要使用cover-view和cover-image标签,不然层级不够

wxss

/* custom-tab-bar/index.wxss */
.tab-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 48px;
    background: #FFFFFF;
    display: flex;
    padding-bottom: env(safe-area-inset-bottom);
    z-index: 999999;
}
  
.tab-bar-border {
    background-color: #FFFFFF;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 1px;
    transform: scaleY(0.5);
    z-index: 999999;
}
  
.tab-bar-item {
    flex: 1;
    text-align: center;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}
  
.tab-bar-item .cover-image {
    width: 44rpx;
    height: 44rpx;
}
  
.tab-bar-item .cover-view {
    margin-top: 8rpx;
    font-size: 24rpx;
}
  

js

const app = getApp();
Component({
    data: {
        selected: 0,
        color: "#C2C7CC",
        roleId: '',
        selectedColor: "#FF992E",
        backgroundColor: "#ffffff",
        allList: [{
            //商家角色
            list1: [
                {
                    "pagePath": "../../pages/index/index",
                    "text": "首页",
                    "iconPath": "../images/index_icon.png",
                    "selectedIconPath": "../images/index_active_icon.png"
                },
                {
                    "pagePath": "../../pages/order/order",
                    "text": "订单",
                    "iconPath": "../images/order_icon.png",
                    "selectedIconPath": "../images/order_active_icon.png"
                },
                {
                    "pagePath": "../../pages/user/user",
                    "text": "我的",
                    "iconPath": "../images/my_icon.png",
                    "selectedIconPath": "../images/my_active_icon.png"
                }
            ],
            //员工角色
            list2: [
                {
                    "pagePath": "../../pages/stafforder/stafforder",
                    "text": "订单",
                    "iconPath": "../images/order_icon.png",
                    "selectedIconPath": "../images/order_active_icon.png"
                },
                {
                    "pagePath": "../../pages/staffuser/staffuser",
                    "text": "我的",
                    "iconPath": "../images/my_icon.png",
                    "selectedIconPath": "../images/my_active_icon.png"
                }
            ],
        }],
        list: []
    },
    attached() {
    //   const roleId = 1//员工2商家1
      let roleId = wx.getStorageSync('roleId');
    //   console.log('roleId',roleId)
      if (roleId == 1) {
        this.setData({
          list: this.data.allList[0].list1
        })
      } else if (roleId == 2) {
        this.setData({
          list: this.data.allList[0].list2
        })
      }else{
        this.setData({
            list: this.data.allList[0].list1
        })
      }
    },
    methods: {
      switchTab(e) {
        const data = e.currentTarget.dataset      
        const url = data.path
        wx.switchTab({ url })
        // this.setData({
        //   selected: data.index
        // })
      }
    },
})
  

注意:app.json 文件中一定要把所需要的tabbar列举粗来(本人在刚开始写的时候就是没有在app.json写第二种角色的底部tabbar导致显示的时候底部tabbar出不来)
在这里插入图片描述
在这里插入图片描述
tabbar组件的json文件

{
  "component": true,
  "usingComponents": {}
}

最后在所有的所需要的的页面进行判断显示

/**
  * 生命周期函数--监听页面显示
  */
 onShow: function () {
     if (typeof this.getTabBar === 'function' &&  this.getTabBar()) {
         let selected = 1;
         let roleId = wx.getStorageSync('roleId');
         if(roleId == 2){
           selected = 0;
         }
         this.getTabBar().setData({
           selected
         })
     }
 },

目前用户体验度不太好,会出现闪现的问题,如果有解决的可以共享一下的呀

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张张Z7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值