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

Vue刷新后頁面數(shù)據(jù)丟失問題的解決過程

 更新時間:2022年11月25日 08:40:16   作者:小白探索世界歐耶!~  
在做vue項目的過程中有時候會遇到一個問題,就是進行F5頁面刷新的時候,頁面的數(shù)據(jù)會丟失,這篇文章主要給大家介紹了關(guān)于Vue刷新后頁面數(shù)據(jù)丟失問題的解決過程,需要的朋友可以參考下

一、為什么刷新后數(shù)據(jù)會丟失

 vuex存儲的數(shù)據(jù)只是在頁面中,相當(dāng)于全局變量,頁面刷新的時候vuex里的數(shù)據(jù)會重新初始化,導(dǎo)致數(shù)據(jù)丟失。因為vuex里的數(shù)據(jù)是保存在運行內(nèi)存中的,當(dāng)頁面刷新時,頁面會重新加載vue實例,vuex里面的數(shù)據(jù)就會被重新賦值。

二、解決思路

辦法一:將vuex中的數(shù)據(jù)直接保存到瀏覽器緩存中(sessionStorage、localStorage、cookie)

辦法二:在頁面刷新的時候再次請求遠(yuǎn)程數(shù)據(jù),使之動態(tài)更新vuex數(shù)據(jù)

辦法三:在父頁面向后臺請求遠(yuǎn)程數(shù)據(jù),并且在頁面刷新前將vuex的數(shù)據(jù)先保存至sessionStorage(以防請求數(shù)據(jù)量過大頁面加載時拿不到返回的數(shù)據(jù))

分析:

辦法一的缺點是不安全,不適用大數(shù)據(jù)量的存儲;

辦法二適用于少量的數(shù)據(jù),并且不會出現(xiàn)網(wǎng)絡(luò)延遲;

辦法三是要講的重點,辦法二和辦法一一起使用。

有兩種方式可以把值存儲到sessionStoage

// 第一種方式,標(biāo)準(zhǔn)方法
sessionStorage.setItem('email','xxx@qq.com');
 
// 第二種方式,直接當(dāng)成普通對象屬性賦值。
sessionStorage.blog = 'http://xxxxxx';

兩種獲取值的方法

// 1. 標(biāo)準(zhǔn)方法
var email = sessionStorage.getItem('email');
// 2. 直接取屬性值
var blog = sessionStorage.blog;

移除key/value

// 移除之后,再獲取值,將會得到 undefined
// 根據(jù)key,移除鍵值對
sessionStorage.removeItem('email');

清空sessionStorage

// 全部清除
sessionStorage.clear();
//也可以指定刪除
sessionStorage.removeItem('keyName')
 

ps:如果這個key是存儲在store里面的,還可以這么寫

created() {
    // 在頁面加載時讀取sessionStorage里的狀態(tài)信息
    if (sessionStorage.getItem('store')) {
      this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem('store'))))
    }
    // 在頁面刷新時將vuex里的信息保存到sessionStorage里
    window.addEventListener('beforeunload', () => {
      sessionStorage.setItem('store', JSON.stringify(this.$store.state))
    })
  }

localStorage的操作方法也同理,這里不再贅述

三、解決方法

本人選擇的是sessionStorage,選擇的原因是:

其一,由于vue是單頁面應(yīng)用,操作都是在一個頁面跳轉(zhuǎn)路由,我只需要在當(dāng)前頁面使用key;

其二,使用sessionStorage可以保證打開頁面時sessionStorage的數(shù)據(jù)為空,而如果是localStorage則會讀取上一次打開頁面的數(shù)據(jù)。

具體代碼如下: 

created () {
  if (this.$route.query !== {} && typeof (this.$route.query) === 'string') {
    this.userKey = this.$route.query
    sessionStorage.setItem('userkey', this.userKey) //初次收到userKey,存起來
  } else {
    if (sessionStorage.getItem('userkey')) {
      this.userKey = sessionStorage.getItem('userkey') //不是第一次了,取出來
    } else {
      console.log('##userInfo##', store.state.user.userInfo)
  //如果實在是沒有了,就直接去store里面取
      this.userKey = store.state.user.userInfo.userKey
      }
  }
  console.log('##userkey##', this.userKey)//檢查userKey變沒變
  this.getcollect()//調(diào)用方法
},
beforeDestroy () {
//毀滅前先移除掉,否則我跳轉(zhuǎn)到其它地方,sessionStorage里面依舊存在著userKey
  sessionStorage.removeItem('userkey')
  },

四、總結(jié)

sessionStorage、localStorage、cookie三者的區(qū)別:

localStorage -- 是永久存儲在本地,除非你主動去刪除;【手動刪除】

sessionStorage -- 是存儲到當(dāng)前頁面關(guān)閉為止,和其他tab頁沒關(guān)聯(lián);【頁面關(guān)閉就沒有了】

cookie -- 則根據(jù)你設(shè)置的有效時間來存儲,但缺點是不能儲存大數(shù)據(jù)且不易讀取,會和后臺進行交互。

怎么把一個對象存儲到瀏覽器本地中

利用sessionStorage或者localStorage把對象存到瀏覽器中;

//保存數(shù)據(jù)
localStorage.setItem("key", "value");
sessionStorage .setItem("key", "value");
//讀取數(shù)據(jù):
let lastname = localStorage.getItem("key");
let lastname = sessionStorage .getItem("key");
//刪除數(shù)據(jù):
localStorage.removeItem("key");
sessionStorage .removeItem("key");

值得注意的是: 

存儲的key值只在單頁面使用,則選擇sessionStorage

存儲的key想要在各個頁面均能使用,要選擇localStorage

Vuex ----狀態(tài)管理模式 + 庫

相當(dāng)于共享倉庫,方便任何組件直接獲取和修改。

state - 數(shù)據(jù)【存項目共享狀態(tài),是響應(yīng)式的,store的數(shù)據(jù)改變,所有依賴此狀態(tài)的組件會更新】

$store.state.count

mutations - 方法【同步函數(shù),只建議在這個地方修改數(shù)據(jù)】

inc(state, 參數(shù)唯一) {}

$store.commit('inc', 2)

actions -【異步操作】【提交的是mutations,不直接修改狀態(tài)】

increment(context, num) {context.commit()}

this.$store.dispatch('',arg)

getters - 包裝數(shù)據(jù) 【store的計算屬性,可緩存】

show: function(state) {}

this.$store.getters.show

傳參,返回函數(shù):show(state) {return function(參數(shù)) {return ...}}【不會緩存數(shù)據(jù)】

想要存取、修改、刪除vuex倉庫中的狀態(tài)數(shù)據(jù),需要按照一定的語法規(guī)則,比如按照action-->mutaion-->state的規(guī)則去增刪改查,比如使用輔助函數(shù)如增刪改查vuex中的數(shù)據(jù)

5e3240c33eae106e7f75c36f1b04aa19.png

總結(jié) 

到此這篇關(guān)于Vue刷新后頁面數(shù)據(jù)丟失問題解決的文章就介紹到這了,更多相關(guān)Vue刷新后頁面數(shù)據(jù)丟失內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3中組件事件和defineEmits示例代碼

    vue3中組件事件和defineEmits示例代碼

    這篇文章主要給大家介紹了關(guān)于vue3中組件事件和defineEmits的相關(guān)資料,組件事件是Vue組件之間進行通信的一種方式,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • vue實現(xiàn)二級彈框案例

    vue實現(xiàn)二級彈框案例

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)二級彈框案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • vue更改數(shù)組中的值實例代碼詳解

    vue更改數(shù)組中的值實例代碼詳解

    這篇文章主要介紹了vue更改數(shù)組中的值,本文通過兩個例子,給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • vue中使用iview自定義驗證關(guān)鍵詞輸入框問題及解決方法

    vue中使用iview自定義驗證關(guān)鍵詞輸入框問題及解決方法

    這篇文章主要介紹了vue中使用iview自定義驗證關(guān)鍵詞輸入框問題及解決方法,本文通過實例結(jié)合代碼的形式給大家介紹解決方法,需要的朋友可以參考下
    2018-03-03
  • vue中css如何使用data中的變量

    vue中css如何使用data中的變量

    這篇文章主要介紹了vue中css如何使用data中的變量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue項目網(wǎng)站全局置灰功能實現(xiàn)示例詳解

    vue項目網(wǎng)站全局置灰功能實現(xiàn)示例詳解

    這篇文章主要為大家介紹了vue項目網(wǎng)站全局置灰功能實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 從0搭建Vue3組件庫如何使用?glup?打包組件庫并實現(xiàn)按需加載

    從0搭建Vue3組件庫如何使用?glup?打包組件庫并實現(xiàn)按需加載

    這篇文章主要介紹了從0搭建Vue3組件庫如何使用?glup?打包組件庫并實現(xiàn)按需加載,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 詳解mpvue scroll-view自動回彈bug解決方案

    詳解mpvue scroll-view自動回彈bug解決方案

    設(shè)置了scroll-top的scroll-view組件,在組件所在vue實例data發(fā)生改變時會自動回彈到最上方,非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • 簡述vue中的config配置

    簡述vue中的config配置

    這篇文章主要介紹了vue中的config配置 ,本文給大家介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Vue如何防止按鈕重復(fù)點擊方案詳解

    Vue如何防止按鈕重復(fù)點擊方案詳解

    這篇文章主要介紹了vue 如何處理防止按鈕重復(fù)點擊問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論

邢台县| 西乌珠穆沁旗| 南涧| 福鼎市| 萨迦县| 新野县| 莫力| 临沂市| 蓬莱市| 丰台区| 新密市| 牟定县| 南昌县| 左贡县| 手游| 葵青区| 广汉市| 汶上县| 黔西县| 铁岭市| 汝城县| 思南县| 翁牛特旗| 谢通门县| 额敏县| 武定县| 越西县| 都江堰市| 紫金县| 阳高县| 洪湖市| 徐水县| 深州市| 涞水县| 易门县| 盐山县| 铜陵市| 武穴市| 山西省| 梅州市| 大新县|