解决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 相关文章推荐
JavaScript 开发工具webstrom使用指南
Dec 09 Javascript
简单对比分析JavaScript中的apply,call与this的使用
Dec 04 Javascript
轻松学习Javascript闭包函数
Dec 15 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
Mar 10 Javascript
javascript 网页进度条简单实例
Feb 22 Javascript
前端页面文件拖拽上传模块js代码示例
May 19 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
Dec 29 jQuery
JavaScript变量提升和严格模式实例分析
Jan 27 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
Sep 24 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
Sep 25 Javascript
jQuery实现二级导航菜单的示例
Sep 30 jQuery
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
Oct 21 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程序
2006/10/09 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
jquery密码强度校验
2015/12/02 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
解决layer图标icon不加载的问题
2019/09/04 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
土木工程专业个人求职信
2013/12/30 职场文书
委托书格式要求
2015/01/28 职场文书
消防隐患整改通知书
2015/04/22 职场文书
企业催款函范本
2015/06/24 职场文书
nginx 添加http_stub_status_module模块
2022/05/25 Servers