解决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 相关文章推荐
xml 与javascript结合的问题解决方法
Mar 24 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
Apr 14 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
Dec 14 Javascript
JQuery判断HTML元素是否存在的两种解决方法
Dec 26 Javascript
原生js和jquery中有关透明度设置的相关问题
Jan 08 Javascript
浅析Javascript中“==”与“===”的区别
Dec 23 Javascript
JS实现跟随鼠标立体翻转图片的方法
May 04 Javascript
基于jQuery实现动态搜索显示功能
May 05 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
Feb 20 Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 Javascript
bootstrap table支持高度百分比的实例代码
Feb 28 Javascript
JS实现判断有效的数独算法示例
Feb 25 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四舍五入、取整、round函数使用示例
2015/02/06 PHP
php实现socket推送技术的示例
2017/12/20 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
简述jQuery Easyui一些用法
2017/08/01 jQuery
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
2017/09/07 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
在Python的Django框架下使用django-tagging的教程
2015/05/30 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
办护照工作证明范本
2014/01/14 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
工程项目建议书范文
2014/03/12 职场文书
股东协议书范本
2014/04/14 职场文书
师范生自荐信模板
2014/05/28 职场文书
安全施工标语
2014/06/07 职场文书
党性分析材料格式
2014/12/19 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server