最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue頁(yè)面刷新記住頁(yè)面狀態(tài)的實(shí)現(xiàn)

 更新時(shí)間:2019年12月27日 16:41:54   作者:vanessa  
這篇文章主要介紹了Vue頁(yè)面刷新記住頁(yè)面狀態(tài)的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

環(huán)境

vue項(xiàng)目,頁(yè)面有搜索、篩選項(xiàng)等。

需求

頁(yè)面跳轉(zhuǎn),切換或者刷新,希望可以記住用戶在頁(yè)面的篩選狀態(tài)

方案v1

vue有提供一種緩存組件的解決方案 — keep-alive。
緩存不活動(dòng)的組件實(shí)例,而不是銷(xiāo)毀它們。

  <keep-alive>
   <router-view v-if="$route.meta.keepAlive" class="app-middle-content"/>
  </keep-alive>
  <router-view v-if="!$route.meta.keepAlive" class="app-middle-content"/>

我們可以使用keep-alive包括路由組件,去緩存頁(yè)面狀態(tài)。

但是,這樣并不能滿足刷新頁(yè)面依舊可以記住頁(yè)面狀態(tài)的需求。因?yàn)樗⑿聻g覽器頁(yè)面的時(shí)候,等于是刷新了整個(gè)vue實(shí)例應(yīng)用,所有vue緩存的數(shù)據(jù)都會(huì)丟失。

方案v2

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

  • 為了滿足刷新頁(yè)面依然能夠記住頁(yè)面狀態(tài),我們需要把頁(yè)面狀態(tài)做持久化處理
  • 在localStorage, sessionStorage, cookie三種方案中,我選擇了sessionStorage
  • 然后只需要,在頁(yè)面刷新或者銷(xiāo)毀之前,記錄頁(yè)面需要記住的參數(shù)。然后在頁(yè)面加載的時(shí)候讀取之前存儲(chǔ)的參數(shù)。

為了可復(fù)用和盡量小的代碼侵入性。我把相關(guān)代碼封裝成了一個(gè)mixin,代碼如下:

// 定義一個(gè)混入對(duì)象
let paramsMemoryMixin = {
 data () {
  return {
   // 記住參數(shù)存儲(chǔ)的key, 請(qǐng)?jiān)谝迷搈ixin的組件中重寫(xiě)
   memoryParamsKey: 'nb-memory-params'
  }
 },
 created: function () {
  this.initParams();
  // 在頁(yè)面刷新時(shí)將篩選信息保存到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()));
  },

  /**
   * 需要記住的頁(yè)面參數(shù)
   * @return { key: value }
   */
  getMemoryParams () {
   throw Error('請(qǐng)重寫(xiě)paramsMemoryMixin的getMemoryParams方法');
  }
 },

 beforeDestroy () {
  window.removeEventListener('beforeunload', this.onPageUnload);
 },

 beforeRouteLeave (to, from, next) {
  this.onPageUnload();
  next();
 }
};

export default paramsMemoryMixin;

然后,在需要緩存的頁(yè)面,引入該mixin,并重寫(xiě)存儲(chǔ)參數(shù)的鍵名: memoryParamsKey 和獲取緩存數(shù)據(jù)的方法 getMemoryParams () 。例如:

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

export default {
 mixins: [ memoryMixin ],
 data () {
  return {
   // 記住參數(shù)存儲(chǔ)的key
   memoryParamsKey: 'xx-xx-params'
  }
 },
 methods: {
  getMemoryParams () {
   return {
    key1: this.value1,
    key2: this.value2,
    key3: this.value3
   };
  }
 }
}

至此,問(wèn)題解決。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue?頁(yè)面刷新、重置、更新頁(yè)面所有數(shù)據(jù)的示例代碼

    vue?頁(yè)面刷新、重置、更新頁(yè)面所有數(shù)據(jù)的示例代碼

    Vue.js提供了多種方式來(lái)實(shí)現(xiàn)頁(yè)面刷新、重置和更新頁(yè)面所有數(shù)據(jù)的功能,下面通過(guò)示例代碼演示vue?頁(yè)面刷新、重置、更新頁(yè)面所有數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • vue實(shí)現(xiàn)文件上傳功能

    vue實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Vue項(xiàng)目從webpack3.x升級(jí)webpack4不完全指南

    Vue項(xiàng)目從webpack3.x升級(jí)webpack4不完全指南

    前段時(shí)間,泡面將自己的一個(gè)Vue-cli構(gòu)建的前端框架從webpack3.x升級(jí)到了4.x版本,現(xiàn)在才拉出來(lái)記錄一下,已備忘之用,也和大家分享一下,需要的朋友可以參考下
    2019-04-04
  • 詳解vue-cli + webpack 多頁(yè)面實(shí)例應(yīng)用

    詳解vue-cli + webpack 多頁(yè)面實(shí)例應(yīng)用

    本篇文章主要介紹了詳解vue-cli + webpack 多頁(yè)面實(shí)例應(yīng)用,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-04-04
  • Vue 3 中 h 方法示例詳解

    Vue 3 中 h 方法示例詳解

    Vue3中的h方法用于創(chuàng)建虛擬DOM節(jié)點(diǎn),是渲染函數(shù)的核心,它接受三個(gè)參數(shù):type(節(jié)點(diǎn)類(lèi)型)、props(屬性對(duì)象)和children(子節(jié)點(diǎn)),通過(guò)示例展示了如何使用h方法創(chuàng)建簡(jiǎn)單的HTML元素、帶有屬性的元素、嵌套元素和自定義組件,感興趣的朋友一起看看吧
    2025-03-03
  • vue中g(shù)et方法\post方法如何傳遞數(shù)組參數(shù)詳解

    vue中g(shù)et方法\post方法如何傳遞數(shù)組參數(shù)詳解

    在前后端交互的時(shí)候,有時(shí)候需要通過(guò)get或者delete傳遞一個(gè)數(shù)組給后臺(tái),下面下面這篇文章主要給大家介紹了關(guān)于vue中g(shù)et方法\post方法如何傳遞數(shù)組參數(shù),文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • elementui中使用el-tabs切換實(shí)時(shí)更新數(shù)據(jù)

    elementui中使用el-tabs切換實(shí)時(shí)更新數(shù)據(jù)

    這篇文章主要介紹了elementui中使用el-tabs切換實(shí)時(shí)更新數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 使用vue init webpack項(xiàng)目名創(chuàng)建項(xiàng)目方式

    使用vue init webpack項(xiàng)目名創(chuàng)建項(xiàng)目方式

    這篇文章主要介紹了使用vue init webpack項(xiàng)目名創(chuàng)建項(xiàng)目方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue實(shí)現(xiàn)配置全局訪問(wèn)路徑頭(axios)

    vue實(shí)現(xiàn)配置全局訪問(wèn)路徑頭(axios)

    今天小編就為大家分享一篇vue實(shí)現(xiàn)配置全局訪問(wèn)路徑頭(axios),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Vue中v-html圖片過(guò)大導(dǎo)致溢出的問(wèn)題及解決

    Vue中v-html圖片過(guò)大導(dǎo)致溢出的問(wèn)題及解決

    這篇文章主要介紹了Vue中v-html圖片過(guò)大導(dǎo)致溢出的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評(píng)論

玛曲县| 化州市| 南阳市| 鸡泽县| 万年县| 永新县| 齐齐哈尔市| 龙南县| 惠安县| 景宁| 江达县| 江永县| 安图县| 泸定县| 苍梧县| 灵石县| 安丘市| 安塞县| 九江县| 双柏县| 庄浪县| 大化| 屯留县| 广平县| 四平市| 新巴尔虎右旗| 哈尔滨市| 屯昌县| 云梦县| 临夏市| 靖西县| 繁昌县| 太原市| 洪雅县| 仙桃市| 临猗县| 报价| 靖边县| 黎平县| 巴塘县| 渝中区|