uni-app 根據(jù)用戶不同身份顯示不同的tabBar

最近在一個(gè)uni-app項(xiàng)目中遇到一個(gè)需求,在登錄頁面成功登錄以后需要判斷身份,不同的身份的進(jìn)入不同的tabBar頁面,但是在uni-app項(xiàng)目中pages.json中的tabBarlist數(shù)組只有一個(gè),且不能寫成動態(tài)的,那如何實(shí)現(xiàn)這個(gè)需求呢?答案是需要我們自定義tabBar

1智绸、我們確定在 pages.json文件中的pages數(shù)組中的第一個(gè)頁面就是進(jìn)入程序時(shí)展示的第一個(gè)頁面,那這個(gè)頁面肯定就是我們的登錄頁面了卢厂。
2脾猛、將pages.json中的tabBarlist設(shè)置為空數(shù)組,即不再使用默認(rèn)系統(tǒng)自帶的tabBar組件嗓蘑。
3配椭、創(chuàng)建tabBar.vue組件,組件內(nèi)的代碼內(nèi)容如下沐飘。
<template>
    <view class="tab-bar">
        <view v-for="(item,index) in list" :key="index" class="tab-bar-item" @click="switchTab(item, index)">
            <image class="tab_img" :src="currentIndex == index ? item.selectedIconPath : item.iconPath"></image>
            <view class="tab_text" :style="{color: currentIndex == index ? selectedColor : color}">{{item.text}}</view>
        </view>
    </view>
</template>

<script>
    export default {
        props: {
            selectedIndex: { // 當(dāng)前選中的tab index
                default: 0
            },
        },
        data() {
            return {
                color: "#666666",
                selectedColor: "#00BAB2",
                list: [],
                currentIndex:0,
            }
        },
        created() {
            this.currentIndex = this.selectedIndex;
            
            var _this = this
            
            if (uni.getStorageSync('identify') == 'nurse') {
                //護(hù)士
                _this.list = [{
                        "pagePath": "/pages/nursehome/nursehome",
                        "iconPath": "/static/tab/home_n.png",
                        "selectedIconPath": "/static/tab/home_s.png",
                        "text": "首頁"
                    },
                    {
                        "pagePath": "/pages/personalcenter/personalcenter",
                        "iconPath": "/static/tab/personal_n.png",
                        "selectedIconPath": "/static/tab/personal_s.png",
                        "text": "我的"
                    }
                ]
            } else {
                //醫(yī)管
                _this.list = [{
                        "pagePath": "/pages/home/home",
                        "iconPath": "/static/tab/home_n.png",
                        "selectedIconPath": "/static/tab/home_s.png",
                        "text": "首頁"
                    },
                    {
                        "pagePath": "/pages/nurse/nurselist",
                        "iconPath": "/static/tab/nurse_n.png",
                        "selectedIconPath": "/static/tab/nurse_s.png",
                        "text": "護(hù)士"
                    },
                    {
                        "pagePath": "/pages/personalcenter/personalcenter",
                        "iconPath": "/static/tab/personal_n.png",
                        "selectedIconPath": "/static/tab/personal_s.png",
                        "text": "我的"
                    }
                ]
            }
        },
        methods: {
            switchTab(item, index) {
                this.currentIndex = index;
                
                let url = item.pagePath;
                uni.redirectTo({url:url})
            }
        }
    }
</script>

<style lang="scss">
    .tab-bar {
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        height: 100rpx;
        background: white;
        display: flex;
        justify-content: center;
        align-items: center;
        padding-bottom: env(safe-area-inset-bottom); // 適配iphoneX的底部

        .tab-bar-item {
            flex: 1;
            text-align: center;
            display: flex;
            justify-content: center;
            align-items: center;
            flex-direction: column;
            .tab_img {
                width: 37rpx;
                height: 41rpx;
            }
            .tab_text {
                font-size: 20rpx;
                margin-top: 9rpx;
            }
        }
    }
</style>

這里需要注意:里面的圖片路徑要寫成絕對路徑游桩,不然打包的時(shí)候如果是在該項(xiàng)目下的頁面會出現(xiàn)層級問題,顯示不出來圖片

4耐朴、在main.js文件中將自定義的tabBar定義為全局組件借卧。
import tabBar from "components/tabBar/tabBar.vue"
Vue.component('tabBar',tabBar)
5、在每一個(gè)原本將要設(shè)置為tabBar的子頁面添加我們自定義的tabBar組件筛峭。
//首頁
<tabBar selectedIndex = 0></tabBar>

//護(hù)士列表
<tabBar selectedIndex = 1></tabBar>
6铐刘、登錄頁面中成功登錄以后的頁面的切換邏輯。
if(this.data.identify == '護(hù)士'){
    uni.setStorageSync('identify','nurse')
}else{
    uni.setStorageSync('identify','manager')
}

uni.reLaunch({
    url:'../home/home'
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末影晓,一起剝皮案震驚了整個(gè)濱河市镰吵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挂签,老刑警劉巖疤祭,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饵婆,居然都是意外死亡勺馆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門侨核,熙熙樓的掌柜王于貴愁眉苦臉地迎上來草穆,“玉大人,你說我怎么就攤上這事芹关⌒” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵侥衬,是天一觀的道長诗祸。 經(jīng)常有香客問我跑芳,道長,這世上最難降的妖魔是什么直颅? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任博个,我火速辦了婚禮,結(jié)果婚禮上功偿,老公的妹妹穿的比我還像新娘盆佣。我一直安慰自己,他們只是感情好械荷,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布共耍。 她就那樣靜靜地躺著,像睡著了一般吨瞎。 火紅的嫁衣襯著肌膚如雪痹兜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天颤诀,我揣著相機(jī)與錄音字旭,去河邊找鬼。 笑死崖叫,一個(gè)胖子當(dāng)著我的面吹牛遗淳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播心傀,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼屈暗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了剧包?” 一聲冷哼從身側(cè)響起恐锦,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疆液,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陕贮,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡堕油,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肮之。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掉缺。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖戈擒,靈堂內(nèi)的尸體忽然破棺而出眶明,到底是詐尸還是另有隱情,我是刑警寧澤筐高,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布搜囱,位于F島的核電站丑瞧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蜀肘。R本人自食惡果不足惜绊汹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扮宠。 院中可真熱鬧西乖,春花似錦、人聲如沸坛增。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽收捣。三九已至届案,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坏晦,已是汗流浹背萝玷。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昆婿,地道東北人球碉。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像仓蛆,于是被迫代替她去往敵國和親睁冬。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 開發(fā)工具 HBuilder-x[https://www.dcloud.io/hbuilderx.html]微信開發(fā)...
    渺渺空空閱讀 3,135評論 0 0
  • uni-app的基本使用 基礎(chǔ)部分: 環(huán)境搭建 頁面外觀配置 數(shù)據(jù)綁定 uni-app的生命周期 組件的使用 un...
    千山鳥語閱讀 492評論 0 1
  • uni-app的基本使用 課程介紹: 基礎(chǔ)部分: 環(huán)境搭建 頁面外觀配置 數(shù)據(jù)綁定 uni-app的生命周期 組件...
    Neo_duan閱讀 2,099評論 1 1
  • 環(huán)境搭建 頁面外觀配置 數(shù)據(jù)綁定 uni-app的生命周期 組件的使用 條件注釋跨端兼容 uni-app的事件 導(dǎo)...
    不是隔壁的老王啊閱讀 2,565評論 0 0
  • 單頁面程序 uni-app 約定頁面文件遵循 Vue 單文件組件 (SFC) 規(guī)范[https://vue-loa...
    Jagtu閱讀 15,038評論 0 0