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.pswp.cn/news/538734.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538734.shtml
英文地址,請注明出處:http://en.pswp.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;必選參數指的是必須要傳…