解决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 相关文章推荐
jquery multiSelect 多选下拉框
Jul 09 Javascript
js选取多个或单个元素的实现代码(用class)
Aug 22 Javascript
鼠标滚轮改变图片大小的示例代码
Nov 20 Javascript
Javascript让DEDECMS告别手写Tag
Sep 01 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
Mar 04 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
jquery操作select元素和option的实例代码
Feb 03 Javascript
angularjs实现首页轮播图效果
Apr 14 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
Jul 28 Javascript
Vue渲染函数详解
Sep 15 Javascript
Node.js Event Loop各阶段讲解
Mar 08 Javascript
优雅的处理vue项目异常实战记录
Jun 05 Javascript
解决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中GET变量的使用
2006/10/09 PHP
玩转虚拟域名◎+ .
2006/10/09 PHP
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
Node.js实现简单管理系统
2019/09/23 Javascript
Python 对象中的数据类型
2017/05/13 Python
python多线程之事件Event的使用详解
2018/04/27 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
大学生期末自我鉴定
2014/02/01 职场文书
岗位安全生产责任书
2014/07/28 职场文书
五一劳动节活动总结
2015/02/09 职场文书
公务员年终个人总结
2015/02/12 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers