解决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 相关文章推荐
HTML代码中标签的全部属性 中文注释说明
Mar 26 Javascript
单独使用CKFinder选择图片的方法
Aug 21 Javascript
jquery实现居中弹出层代码
Aug 25 Javascript
JavaScript定义类的几种方式总结
Jan 06 Javascript
超级简单的jquery操作表格方法
Dec 15 Javascript
JS实现具备延时功能的滑动门菜单效果
Sep 17 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
Nov 02 Javascript
AngularJs  unit-testing(单元测试)详解
Sep 02 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
Jan 19 Javascript
ES6新特性五:Set与Map的数据结构实例分析
Apr 21 Javascript
JavaScript实现简单轮播图效果
Dec 01 Javascript
测量JavaScript函数的性能各种方式对比
Apr 27 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
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
Python Celery多队列配置代码实例
2019/11/22 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
优秀企业获奖感言
2014/02/01 职场文书
优秀员工推荐信
2014/05/10 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫