解决vue页面刷新或者后退参数丢失的问题


Posted in Javascript onMarch 13, 2018

在toB的项目中,会经常遇到列表数据筛选查询的情景,当要打开某一项的详情页或者暂时离开列表页,再返回(后退时),选择的筛选条件会全部丢失,辛辛苦苦选择好的条件全没了,还得重新选择,如果有分页的更头大,还得重新一页页翻到之前看到的那一页,用户体验极度不友好。

我的解决有两种:

第一种方法:用vue 的<keep-alive>,即在<router-view>外套一层<keep-alive>。

虽然可以达到一定效果,但是控制起来比较麻烦,比如项目中并不是所有页面都需要缓存,代码写起来复杂

第二种方法:直接用localStorage,简单粗暴(推荐)

代码如下:

list.vue

export default {
    data () {
      return {
        searchForm:{
          project_name:'',
          status:'',
          city:'',
          round:'',
          fund:'',
          charge:'',
          page: 1
        },
      },
      beforeRouteLeave(to, from, next){
      //打开详情页(或者下一个任意界面)之前,把筛选条件保存到localStorage,如果离开列表页并且打开的不是详情页则清除,也可以选择不清除
      if (to.name == 'Detail') {
        let condition = JSON.stringify(this.searchForm)
        localStorage.setItem('condition', condition)
      }else{
        localStorage.removeItem('condition')
      }
      next()
    },
    created(){
      //从localStorage中读取条件并赋值给查询表单
      let condition = localStorage.getItem('condition')
      if (condition != null) {
       this.searchForm = JSON.parse(condition)
      }
      this.$http.get('http://example.com/api/test', {params: this.searchForm})
      .then((response)=>{
        console.log(response.data)
      }).catch((error)=>{
        console.log(error)
      })
    }
  }
}

这种方法也受限于localStorage的局限性,不过可以通过使用cookie来弥补,具体不再详述。

以上这篇解决vue页面刷新或者后退参数丢失的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
Mar 02 Javascript
js中根据字数截取字符串,不能截断url
Jan 12 Javascript
Javascript玩转继承(二)
May 08 Javascript
jQuery自动完成插件completer附源码下载
Jan 04 Javascript
微信支付 JS API支付接口详解
Jul 11 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
Sep 01 Javascript
JS实现的tab页切换效果完整示例
Dec 18 Javascript
JS中注入eval, Function等系统函数截获动态代码
Apr 03 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
Jun 21 Javascript
vue 使用高德地图vue-amap组件过程解析
Sep 07 Javascript
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 Javascript
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
解决vue单页使用keep-alive页面返回不刷新的问题
Mar 13 #Javascript
解决vue 路由变化页面数据不刷新的问题
Mar 13 #Javascript
一种angular的方法级的缓存注解(装饰器)
Mar 13 #Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
Mar 12 #Javascript
解决vue多个路由共用一个页面的问题
Mar 12 #Javascript
angular5 httpclient的示例实战
Mar 12 #Javascript
vue 简单自动补全的输入框的示例
Mar 12 #Javascript
You might like
PHP的面向对象编程
2006/10/09 PHP
PHP初学者头疼问题总结
2006/10/09 PHP
利用PHP动态生成VRML网页
2006/10/09 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
Angular.js实现动态加载组件详解
2017/05/28 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
Python和php通信乱码问题解决方法
2014/04/15 Python
Python多继承顺序实例分析
2018/05/26 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
实例代码讲解Python 线程池
2020/08/24 Python
美国五金商店:Ace Hardware
2018/03/27 全球购物
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
生物科学专业毕业生求职信
2014/06/02 职场文书
迎国庆横幅标语
2014/10/08 职场文书
家属答谢词
2015/01/05 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
教师辞职信范文
2015/02/28 职场文书
工会工作个人总结
2015/03/03 职场文书
保护动物的宣传语
2015/07/13 职场文书
靠谱的活动总结
2019/04/16 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
Python字典的基础操作
2021/11/01 Python