博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue项目查询条件持久化流程设计
阅读量:6083 次
发布时间:2019-06-20

本文共 1065 字,大约阅读时间需要 3 分钟。

概要

在做一个查询系统时,用户会选择很多条件,但在切换页面或者刷新页面时,这些条件就会丢失。为了解决这个问题,我们通常会有书签功能,即保存筛选条件到后端数据库。但是总不能用户更改一个条件,就去保存一次吧,所以设计了这个本地+远端持久化的方案。

流程图

注意观察localStorage的数据流入与流出

主要思想

  1. 在router的beforeEach里判断是否有query参数,如果有就缓存query到localStorage,然后直接next();否则,把localStorage中缓存的query恢复到路由的query上。
let lastRoute;const beforeEach = function(to, from, next) {  // HACK: 避免死循环  if(lastRoute && to.path === lastRoute.path) {    next();    lastRoute = null;  } else if(!to.name) {    // 第一个路由是根路由,这个不处理    next();  } else {    const projectId = store.getters.projectId;    const persistName = genName(projectId, to.name);    // 如果是通过导航来切换路由,query都会是空的,此时需要恢复url参数    if(isEmpty(to.query)) {      lastRoute = to;      next({        path: to.path,        query: {          query: getStorage(persistName, true /**使用原生localStorage */)        }      });    } else {      // 否则,如果是F5或者copy的url,那么直接缓存到本地      const {query} = to.query;      setStorage(persistName, JSON.parse(query), true /**使用原生localStorage */);      next();    }  }};复制代码
  1. 在我们的业务页面里,如果有类似书签这样的功能,应该把当前的筛选条件,同时保存到本地和远端。
  2. 还有很多细节,需要根据具体的业务编写适应性的代码。

转载地址:http://dluwa.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
NLog文章系列——如何优化日志性能
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>
ThreadPoolExecutor线程池运行机制分析-线程复用原理
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>