js如何实现,地址栏改变页面加载刷新,且当前页面选中的几个条件刷新后依然是选中的。

新手上路,请多包涵

困扰了好久,用的axios发的get请求,地址栏能实现改变,但改变后不会自动刷新,需要手动点击刷新按钮,且刷新后当前选中的几个条件都变为了默认全部

阅读 3.8k
3 个回答
  1. 如果需要刷新页面
    history.pushState不会刷新页面,改成window.location.href=res.config.url,然后还需要做刷新后的数据初始化,也就是你的选中状态
  2. 不需要刷新

    const bindEventListener = function(type) {
    const historyEvent = history[type];
    return function() {
        const newEvent = historyEvent.apply(this, arguments);
       const e = new Event(type);
        e.arguments = arguments;
        window.dispatchEvent(e);
        return newEvent;
    };
    };
    history.pushState = bindEventListener('pushState');
    window.addEventListener('pushState', function(e) {
      console.log('这里做数据初始化');
    });

有几种策略实现刷新后延续选项状态等

  1. 利用cookie暂存
  2. 利用本地暂存
  3. 利用服务器端session暂存
  4. 利用地址栏信息暂存

其中 1 和 2 本质上类似,只是存储数据的方式不同。3 其实和1与2也是类似的,只是数据存储在每次本地改变选项时,及时更新到服务器上,本地只保存了session。4是一种特殊处理,其实质还是本地存储,只是存储在地址栏中(访问路径中,一般只适合选项比较少的,因为地址有长度限制)。

https://www.baidu.com/s?wd=思否
百度
image.png

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