我有这样一个场景,我有一系列tab,使用vue-router进行切换。假设是这样的(伪代码):
import VueRouter from 'vue-router'
new VueRouter({
routes:[
{
path:'/tab1',
component: Tab1,
name:'tab1'
},
{
path:'/tab2',
component: Tab2,
name:'tab2'
},
{
path:'/tab3',
component: Tab3,
name:'tab3'
}
]
})
<template>
<div>
<div>
<span @click="switch(item)" v-for="(item,index) in tabs" :key="index">{{item}}</span>
</div>
<router-view></router-view>
</div>
</template>
<script>
export default {
data(){
return {
tabs:['tab1','tab2','tab3']
}
},
methods:{
switch(name){
this.$router.push({
name
})
}
}
}
</script>
每次switch都会push一条新的history,比如我先依次点击tab1、tab2、tab3,浏览器的history记录里面会新增三条记录。然后我再点击tab1,我并不想再push一条history,这里可以直接this.$router.go(-2),但是假如在安卓上,用户也可以通过back键切换路由,我也可以watch route.name的变化用一个数组记录所有tab的变化并排除掉其他的路由,这样可以解决问题。但是这样并不是一种通用的解决方案。
有没有哪位大神遇到过类似的问题,求告知
你vue-router的模式是history模式吧?改成hash模式,hash模式下,相同的hash值是不会在浏览记录历史栈中添加记录的。详情可参考:https://segmentfault.com/a/11...