react-router历史记录问题

假设有A、B、C、D四个页面:A -> B -> C -> D,也就是从A页面跳转到B页面再到C页面最后到D页面,都是用history中的push方法进行跳转的。

两个场景:

  1. 第一个场景,最后跳到D页面,能不能清除之前所有历史记录,也就是history只有D页面?
  2. 第二个场景,在还没跳转到D页面,B可以前进到C页面,C页面可以后退到B页面,一旦C页面前进到D页面,这时候点击浏览器的后退按钮,能不能直接退回到A页面,不后退到B或C页面?

请问有没有对应的解决方案?

阅读 8.3k
3 个回答
  1. 使用 history.replaceState() 方法,只保留 D 页面的记录
  2. 监听 popstate 事件
$(window).on('popstate', function () {
    // 省略了逻辑判断
    window.history.go(-3);
});

监听点击返回时:

window.onpopstate = function (event) {
    if(当前url==D && document.location!=A){
         push到A   
    }
};

1.第二个场景是可以实现的,用history.go(-3)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题