解决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 使用手册(三)
Sep 23 Javascript
js 判断checkbox是否选中的操作方法
Nov 09 Javascript
js实现点小图看大图效果的思路及示例代码
Oct 28 Javascript
简单的Jquery全选功能
Nov 07 Javascript
jquery中map函数与each函数的区别实例介绍
Jun 23 Javascript
javascript数组详解
Oct 22 Javascript
javascript解决小数的加减乘除精度丢失的方案
May 31 Javascript
AngularJS中的DOM操作用法分析
Nov 04 Javascript
基于 Vue 实现一个酷炫的 menu插件
Nov 14 Javascript
详解服务端预渲染之Nuxt(介绍篇)
Apr 07 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
Apr 08 Javascript
vue中activated的用法
Jan 03 Vue.js
解决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 Memcache 中实现消息队列
2009/11/24 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
PHP安全上传图片的方法
2015/03/21 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
学习python 之编写简单乘法运算题
2016/02/27 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
大班上学期幼儿评语
2014/04/30 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
节电标语大全
2014/06/23 职场文书
家庭教育的心得体会
2014/09/01 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技