解决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实现的导航条切换可显示隐藏
Oct 22 Javascript
Javascript中setTimeOut和setInterval的定时器用法
Jun 12 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
Jul 31 Javascript
详解webpack es6 to es5支持配置
May 04 Javascript
关于使用axios的一些心得技巧分享
Jul 02 Javascript
微信小程序基础教程之worker线程的使用方法
Jul 15 Javascript
js DOM的事件常见操作实例详解
Dec 16 Javascript
vue滑动吸顶及锚点定位的示例代码
May 10 Javascript
js实现简单的点名器随机色实例代码
Sep 20 Javascript
解决vue-loader加载不上的问题
Oct 21 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
Nov 27 Vue.js
详解前端任务构建利器Gulp.js使用指南
Apr 30 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
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
python 输出一个两行字符的变量
2009/02/05 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
python使用代理ip访问网站的实例
2018/05/07 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
python中自带的三个装饰器的实现
2019/11/08 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
公司会议策划方案
2014/05/17 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
债务纠纷起诉书
2015/05/20 职场文书
社区低保工作总结2015
2015/07/23 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python