解决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插件 easyUI属性汇总
Jan 19 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
Jul 31 Javascript
一个js导致的jquery失效问题的解决方法
Nov 27 Javascript
node.js使用nodemailer发送邮件实例
Mar 10 Javascript
js实现class样式的修改、添加及删除的方法
Jan 20 Javascript
简介JavaScript中Math.cos()余弦方法的使用
Jun 15 Javascript
Node.js重新刷新session过期时间的方法
Feb 04 Javascript
JavaScript中的各种操作符使用总结
May 26 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
Dec 13 Javascript
Mint UI实现A-Z字母排序的城市选择列表
Dec 28 Javascript
vue-i18n结合Element-ui的配置方法
May 20 Javascript
基于PHP pthreads实现多线程代码实例
Jun 24 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
生成sessionid和随机密码的例子
2006/10/09 PHP
php入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
Python注释详解
2016/06/01 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
Python脚本处理空格的方法
2016/08/08 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
Python多层装饰器用法实例分析
2018/02/09 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
numpy库reshape用法详解
2020/04/19 Python
python numpy库np.percentile用法说明
2020/06/08 Python
Python 绘制可视化折线图
2020/07/22 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
幼儿园春游活动方案
2014/01/19 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
2016年公司新年寄语
2015/08/17 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS