一个财迷 2021-01-26 10:56 采纳率: 33.3%
浏览 4715

uniapp怎么根据登录用户的角色不同动态改变tabbar内容

uniapp怎么根据登录用户的角色不同动态改变tabbar内容,两种角色,一种是管理员,tabbar需要显示四个,一类是普通用户,tabbar显示两个就可以,哪位大佬有思路或者经验传授一下,感激不尽!!!!

  • 写回答

8条回答 默认 最新

  • 一个财迷 2021-04-09 16:39
    关注

    我之前贴出的地址有bug,切换用户角色登录时,tabbar不会自己发生改变,需要手动刷新,下面是我在之前代码的基础上进行修改的部分

    有些名称我改了,大家写的时候注意下自己定义的名称

    1、修改store/modules/tabbar.js

    import tabBar from '../../untils/tabBar.js'
    
    const tabBer = {
    	state: {
    		role: '',
    		tabBarList: []
    	},
    
    	// mutations改变state里的数据
    	mutations: {
    		setRole(state,role){
    			state.role = role			
    			var i = state.role === 'null' ? 'admin' : 'ordinary'
    			state.tabBarList = tabBar[i]
    		},
    	}
    }
    
    export default tabBer

    2、修改getters.js (此项就是改了一下名称,没啥太大变动)

    const getters = {
        tabBarList: state => state.tabBer.tabBarList,
        role: state => state.tabBer.role
    };
    
    export default getters

    3、页面登录成功后    存储用户身份,调用vuex方法进行判断

    uni.setStorageSync('baseId', baseId)
    this.$store.commit('setRole', baseId)
    
    // 如果是另外一种角色
    uni.setStorageSync('baseId', 'null')
    this.$store.commit('setRole', 'null')

    baseId为需要用来判断的用户角色

     

    4、APP.vue解决vuex刷新数据丢失问题

    <script>
    	import{mapState, mapMutations} from 'vuex'
    	export default {
    		onLaunch: function() {
    			let role = uni.getStorageSync('baseId') // 判断用户是否已登录
    			if(role) {
    				this.setRole(role)
    			}
    			console.log('App Launch')
    		},
    		onShow: function() {
    			console.log('App Show')
    		},
    		onHide: function() {
    			console.log('App Hide')
    		},
    		methods: {
    			...mapMutations(['setRole'])
    		}
    	}
    </script>
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置