解决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 相关文章推荐
Js 获取当前日期时间及其它操作实现代码
Mar 04 Javascript
jquery实现模拟百分比进度条渐变效果代码
Oct 29 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
Dec 13 Javascript
js编写的treeview使用方法
Nov 11 Javascript
浅谈js数组和splice的用法
Dec 04 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
Jan 13 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
Jul 10 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 Javascript
解决iview多表头动态更改列元素发生的错误的方法
Nov 02 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
Nov 30 Javascript
JavaScript实现选项卡效果的分析及步骤
Apr 16 Javascript
vue 实现强制类型转换 数字类型转为字符串
Nov 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
二行代码解决全部网页木马
2008/03/28 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
javascript实现yield的方法
2013/11/06 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
python处理圆角图片、圆形图片的例子
2014/04/25 Python
python实现根据图标提取分类应用程序实例
2014/09/28 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
Python字符串三种格式化输出
2020/09/17 Python
python爬取youtube视频的示例代码
2021/03/03 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
语文教研活动总结
2014/07/02 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
七一建党日演讲稿
2014/09/05 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python
redis实现的四种常见限流策略
2021/06/18 Redis