解决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 相关文章推荐
JObj预览一个JS的框架
Mar 13 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
Dec 15 Javascript
javascript 鼠标拖动图标技术
Feb 07 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
Apr 01 Javascript
Javascript 面试题随笔
Mar 31 Javascript
js Date概念详细介绍
Nov 22 Javascript
js判断横竖屏及禁止浏览器滑动条示例
Apr 29 Javascript
JavaScript中实现最高效的数组乱序方法
Oct 11 Javascript
jquery自定义表格样式
Nov 23 Javascript
JavaScipt选取文档元素的方法(推荐)
Aug 05 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
Apr 28 jQuery
微信小程序:数据存储、传值、取值详解
May 07 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基础教程 php内置函数实例教程
2012/08/21 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
jquery操作cookie插件分享
2014/01/14 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
用js编写留言板
2020/03/17 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
opencv 阈值分割的具体使用
2020/07/08 Python
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
Oracle快照(snapshot)
2015/03/13 面试题
办公室保洁员岗位职责
2013/12/02 职场文书
人事助理自荐信
2014/02/02 职场文书
社区工作者感言
2014/03/02 职场文书
九年级语文教学反思
2016/03/03 职场文书