最近遇到一个问题,在使用mint-uide tabBar时,发现从主页的子页面切回另一个主页时,selected并没有跟着变化。
例如,我从‘个人中心页’进入一个子页面,再从这个子页面切回‘首页’时,发现selected仍然是‘个人中心页’的值,这导致我页面切换了,但是个人中心页的导航点击了不会切换,必须先点击其他页面的导航才行。
HTML标签的代码和官网差不多就不贴出来了。
贴出js代码。
其中,'/matching','/publishOrder','/orderAdmin' ,'/person'
,是我de id值,之所以设成路由的格式是因为——用起来方便
data () {
return {
selected: sessionStorage.getItem('selected') ? JSON.parse(sessionStorage.getItem('selected')) : '/matching'
}
},
watch: {
selected (val, oldVal) {
// 标签栏变化,把selected的值存到sessionStorage,保存当前值
sessionStorage.setItem('selected', JSON.stringify(val))
this.$router.replace(val)
},
// 监听路由变化,保证从其他非主页路由切换过来时,selected也跟着变
'$route.path': function (newVal, oldVal) {
if (newVal === '/matching' || newVal === '/publishOrder' || newVal === '/orderAdmin' || newVal === '/person') {
this.selected = newVal
}
}
}
selected的值存到sessionStorage,看需要,最重要的是监听路由变化。