解决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 相关文章推荐
在IE下:float属性会影响offsetTop的取值
Dec 22 Javascript
jQuery的三种$()
Dec 30 Javascript
基于JQuery的6个Tab选项卡插件
Sep 03 Javascript
jquery实现的导航固定效果
Apr 28 Javascript
c#+jquery实现获取radio和checkbox的值
Sep 12 Javascript
node.js中的fs.open方法使用说明
Dec 17 Javascript
jQuery中:text选择器用法实例
Jan 03 Javascript
JavaScript中join()方法的使用简介
Jun 09 Javascript
jQuery取消ajax请求的方法
Jun 09 Javascript
vue.js学习之递归组件
Dec 13 Javascript
uniapp实现可滑动选项卡
Oct 21 Javascript
javascript实现数字时钟效果
Feb 06 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水印
2007/03/16 PHP
php 获取客户端的真实ip
2009/11/30 PHP
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
PHP获取文件行数的方法
2015/06/10 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
php-fpm中max_children的配置
2019/03/15 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
由document.body和document.documentElement想到的
2009/04/13 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
python实现巡检系统(solaris)示例
2014/04/02 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
经贸日语专业个人求职信范文
2014/04/29 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书