vue的html自动刷新,Vue页面刷新记住页面状态的实现

环境

vue项目,页面有搜索、筛选项等。

需求

页面跳转,切换或者刷新,希望可以记住用户在页面的筛选状态

方案v1

vue有提供一种缓存组件的解决方案 — keep-alive。

缓存不活动的组件实例,而不是销毁它们。

我们可以使用keep-alive包括路由组件,去缓存页面状态。

但是,这样并不能满足刷新页面依旧可以记住页面状态的需求。因为刷新浏览器页面的时候,等于是刷新了整个vue实例应用,所有vue缓存的数据都会丢失。

方案v2

基于方案1的缺陷,衍生出了方案v2

为了满足刷新页面依然能够记住页面状态,我们需要把页面状态做持久化处理

在localStorage, sessionStorage, cookie三种方案中,我选择了sessionStorage

然后只需要,在页面刷新或者销毁之前,记录页面需要记住的参数。然后在页面加载的时候读取之前存储的参数。

为了可复用和尽量小的代码侵入性。我把相关代码封装成了一个mixin,代码如下:

// 定义一个混入对象

let paramsMemoryMixin = {

data () {

return {

// 记住参数存储的key, 请在引用该mixin的组件中重写

memoryParamsKey: 'nb-memory-params'

}

},

created: function () {

this.initParams();

// 在页面刷新时将筛选信息保存到sessionStorage里

window.addEventListener('beforeunload', this.onPageUnload);

},

methods: {

initParams () {

let userParams = JSON.parse(sessionStorage.getItem(this.memoryParamsKey));

for (let key in userParams) {

this[key] = userParams[key];

}

},

onPageUnload () {

sessionStorage.setItem(this.memoryParamsKey, JSON.stringify(this.getMemoryParams()));

},

/**

* 需要记住的页面参数

* @return { key: value }

*/

getMemoryParams () {

throw Error('请重写paramsMemoryMixin的getMemoryParams方法');

}

},

beforeDestroy () {

window.removeEventListener('beforeunload', this.onPageUnload);

},

beforeRouteLeave (to, from, next) {

this.onPageUnload();

next();

}

};

export default paramsMemoryMixin;

然后,在需要缓存的页面,引入该mixin,并重写存储参数的键名: memoryParamsKey 和获取缓存数据的方法 getMemoryParams () 。例如:

import memoryMixin from '文件路径/params-memory-mixin.js';

export default {

mixins: [ memoryMixin ],

data () {

return {

// 记住参数存储的key

memoryParamsKey: 'xx-xx-params'

}

},

methods: {

getMemoryParams () {

return {

key1: this.value1,

key2: this.value2,

key3: this.value3

};

}

}

}

至此,问题解决。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 程序停止打印日志_Python日志打印

简单示例import sysimport ctypesimport loggingimport logging.handlersreload(sys)sys.setdefaultencoding(utf-8)LOG_FILE test_loglogging.basicConfig(filename LOG_FILE,format %(asctime)s - %(levelname)s -%(process)d- %(filename)s:%(funcName)s:%(lineno)d - %(…

21.和和instance of

>> 右移一位。相当于除2 << 左移一位。相当于乘2 public static void main(String[] args) {int a3<<2;int b12>>2;System.out.println("a"a);System.out.println("b"b);}解析&#xff1a; a3*2*212 b12/2/23 运行结果&#xf…

html语言闪烁特效代码,css3 文字闪烁特效代码

今天给大家分享几个文字闪烁特效代码&#xff0c;纯css3代码实现&#xff0c;对于新手小伙伴值得拿来学习一下。文字闪烁特效一通过改变透明度来实现文字的渐变闪烁&#xff0c;代码如下&#xff1a;文字闪烁&#xff1a;闪烁效果.main{color: #666;margin-top: 50px;}/* 定义k…

keyshot怎么贴logo_如何使用KeyShot添加有织纹的Logo

如果你的产品上有企业logo&#xff0c;那么将logo作为一种材质(如镀铬贴纸)就很常见了&#xff0c;但不是在3D里建模logo&#xff0c;建模logo会产生额外的工作&#xff0c;还会降低建模的效率&#xff0c;不过KeyShot提供了一种简单的方法&#xff0c;可以更快地实现相同的效果…

tar解压出错tar: Child returned status 1

一、错误情况 目前我遇到错误情况&#xff1a; 1、压缩文件不是 .tar.gz的文件是.tar文件。使用了 tar -zxvf 命令。 解决方法&#xff1a; 去掉z。 原因&#xff1a; .tar只是将文件打包&#xff0c;文件的大小没什么变化。 .tar.gz是加入了gzip的压缩命令&#xff0c…

2021年山西副高考试成绩查询,中国卫生人才网2021年山西卫生资格考试成绩查询...

2021年山西卫生资格考试成绩查询 由中国卫生人才网考试快讯提供&#xff0c;以及提供2021国家卫生资格成绩查询考试信息。更多关于2021年山西卫生资格考试成绩查询 ,卫生资格考试,2021卫生资格考试,卫生资格成绩快讯的内容&#xff0c;请关注国家卫生资格考试网&#xff01;!20…

团队项目作业1-团队展示与选题

团队展示&#xff1a; 队名&#xff1a;summer 团队项目描述&#xff1a;基于java 、web的四则运算网站的开发&#xff0c;有三种角色&#xff1a;老师、家长、学生。老师在网站上发布四则运算作业&#xff0c;可以设置题目数量&#xff0c;数值范围、以及完成作业限定的时间。…

SP2-0734: 未知的命令开头 imp scott/... - 忽略了剩余的行。

原文地址&#xff1a;http://blog.csdn.net/yangwenxue_admin/article/details/47667943 Oracle数据导入报错&#xff1a;SP2-0734: 未知的命令开头 "imp scott/..." - 忽略了剩余的行。 原因&#xff1a;进入sqlplus里是不能执行imp的(sqlplus不认识imp)&#xff0c…

datatable中某一列最小值_Asp.net中获取DataTable选择第一行某一列值

数据源是一个DataTable&#xff0c;现在我们需要获取这个DataTable的第一行第一列的值。先准备一个数据集&#xff0c;创建一个DataTable&#xff0c;并填充数据&#xff1a;source code:using System;using System.Collections.Generic;using System.Data;using System.Linq;u…

斯坦福计算机科学教材,斯坦福计算机科学

斯坦福大学称得上是世界上最难进的大学之一&#xff0c;尤其是称之为其王牌专业的计算机科学。竞争压力之大不容置疑&#xff0c;首先要弄明白申请要求是什么。出国留学网本文将为大家介绍斯坦福大学计算机科学专业申请条件&#xff0c;请看。计算机科学专业申请要求听了这么多…

impdp导入dmp文件

impdp命令在cmd下直接用&#xff0c;不必登录oracle。只能导入expdp导出的dmp文件。 expdp导出的时候&#xff0c;需要创建 DIRECTORY 导出什么表空间&#xff0c;导入也要什么表空间。 导出什么用户&#xff0c;导入也要什么用户。 如果没有要新建。 从杭州服务器expdp导出…

ArrayList去除集合中字符串的重复值

/* * 需求&#xff1a;ArrayList去除集合中字符串的重复值 * * 分析&#xff1a; * 1.创建一个集合对象 * 2.添加多个字符串元素 * 3.创建一个新的集合 * 4.拿旧集合中的元素到新集合中去找 * A&#xff1a;有则 不要 * B:没有则添加到新集合中 * 5.遍历输出 新集合 */ packa…

silk 编解码_Silk编解码在android实现

Silk编解码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器。Skype已将其开源&#xff0c;可以访问http://developer.skype.com/silk获取最新动向。SILK Codec是一个语音和音频编解码算法, 对于音频带宽、网络带宽和算法复杂度都具有很好的弹性。支…

impdp导入dmp文件ORA-39088: 文件名不能包含路径说明ORA-39001: 参数值无效ORA-39000: 转储文件说明错误

C:\Users\zengmiaogen>impdp yinda/123456127.0.0.1:1521/XE filec:\hz_toolbox_20160613.dmp fully Import: Release 11.2.0.2.0 - Production on 星期四 3月 9 10:19:57 2017 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 连接到: …

高中技校学计算机,我没考上高中,英语数学极差,想上技校学计算机专业,玩代码的那种,有前途吗?...

我没考上高中&#xff0c;英语数学极差&#xff0c;想上技校学计算机专业&#xff0c;玩代码的那种&#xff0c;有前途吗&#xff1f;以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;我没考上…

destoon b2b 360网站智能摘要标签配置

1、新闻资讯部分&#xff1a; <meta property"og:type" content"news"/><meta property"og:title" content"{$title}"/><meta property"og:description" name"description" content"{$head_d…

饥荒联机版连不上服务器_饥荒无法连接klei服务器刷不出服务器解决办法

《饥荒&#xff1a;联机版》服务器卡顿原因分析及解决教程,很多在饥荒联机版的同学经常会遇见卡顿问题&#xff0c;而很多玩家为了解决卡顿问题都会选择自己建一个服务器在其中游玩。可是有些时候连自己建的服务器都会卡&#xff0c;这是什么问题呢》今天小编就为大家带来关于服…

imp导入dmp文件报:IMP-00038: 无法转换为环境字符集句柄IMP-00000: 未成功终止导入

C:\Users\zengmiaogen>imp yinda/123456127.0.0.1:1521/XE filec:\hz_toolbox_20160613.dmp fully Import: Release 11.2.0.2.0 - Production on 星期四 3月 9 10:15:39 2017 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 连接到: Oracl…

html中函数传递多个值,JavaScript 实战开发经验!函数多参数传参技巧

HTML5学堂-码匠&#xff1a;掌握JavaScript代码的你&#xff0c;一定编写封装过函数&#xff0c;为了提升函数的控制性&#xff0c;必不可少的就是参数&#xff0c;必选可选的一大堆参数罗列出来&#xff0c;函数调用貌似变得麻烦起来~~~Tips&#xff1a;必选参数指的是必须要传…