场景移动端:
首页=>列表页=>详情页=>Form1=>Form2=>Form3=>预览页=>提交页=>返回详情页
问题:
提交后=>返回详情页,物理返回又会回到提交页
期望:
期望在回到详情页后返回直接到列表页
解决思路:
详情页进入Form之前记录下当前浏览历史记录length,从提交页成功返回后减去之前的浏览记录
// vue2举例
beforeRouteEnter(to, from, next){
if (from.path === '/from') { // 从提交页回来, 取并减去之前记录length
next(vm =>{
let routeHistory = RouterHistoryManage.get();
let curHistory = window.history;
vm.$router.go(-(curHistory.length - routeHistory.length));
})
return;
}
next();
},
beforeRouteLeave(to, from, next){ // 也可以通过点击按钮跳转前,进行存储
if (to.path === '/from') { // 准备跳转from, 存
// window.history.length;
RouterHistoryManage.set();
};
next();
}
/* vue3 组件内beforeRouteEnter钩子没了,解决思路可以在状态管理机制中存入路由to
to和from,然后在页面做watch监听
*/
router.beforeEach((to, from, next) => {
// 在这里存入to:{name: '', path: ''} from:{name: '', path: ''}
next()
})