解決VUEX刷新的時(shí)候出現(xiàn)數(shù)據(jù)消失
通常,我們?cè)谑褂胿ue編寫頁面時(shí),會(huì)需要使用vuex在組件間傳遞(或者說共同響應(yīng))同一個(gè)數(shù)據(jù)的變化。例如:用戶的登錄信息。
下面,我們使用傳遞用戶登錄信息的例子來一步步解決這個(gè)問題。
首先,我們的第一個(gè)問題是:我在一個(gè)組件(例如登錄組件頁面)中登錄了后,其它頁面要怎么獲取和響應(yīng)這個(gè)變化?(就是這么小白,/(ㄒoㄒ)/~~)
這個(gè)答案就是使用vuex啦,在中文版的文檔中有這樣一句話:
而這里的計(jì)算屬性就是我們的偉大的computed屬性啦~
(至于前面的通過mutation之類的把數(shù)據(jù)存入vuex中的過程就省略了,大家上網(wǎng)搜一下例子一大堆,切忌做伸手黨哦~)
至于用在我們的用戶登錄的例子中就像是下面這樣:
這樣我們就可以在頁面根據(jù)用戶信息響應(yīng)式地顯示內(nèi)容了。
那么,我們的第二個(gè)問題來了:我是獲取到了vuex中的用戶信息,但是我一刷新就沒有了?。≡趺崔k??在線等!十萬火急??!
這個(gè)答案就是使用localStorage啦。(了解過html 5的同學(xué)應(yīng)該都知道它,這里我就不科普了。)
一開始我雖然知道可以用localStorage,但是對(duì)于使用的邏輯有點(diǎn)亂,所以在這里記一下。
1、在vuex獲取到用戶信息時(shí)(例:state.user_id = user_info.user_id),同時(shí)把這個(gè)信息存入localStorage(Lockr.set('user_id', state.user_id) 這個(gè)Lockr是我用了一個(gè)叫Lockr的東西,其實(shí)它就是localStorage而已,關(guān)于它詳細(xì)的請(qǐng)看https://github.com/tsironis/lockr);
2、我們定義一個(gè)mutation方法,再次把數(shù)據(jù)從localStorage傳給state;
3、我們的問題發(fā)生在頁面刷新時(shí),可能很多同學(xué)就會(huì)去想在監(jiān)聽頁面刷新事件時(shí)觸發(fā)上面第2步的那個(gè)方法。其實(shí)不用這么麻煩,在computed屬性時(shí),只要我們判斷一下用戶信息是否為空,為空時(shí)調(diào)用第2步的那個(gè)方法就好了,然后我們把這個(gè)state return給那個(gè)響應(yīng)屬性就好了;
4、至于為什么這么麻煩在state和localStorage中傳來傳去,是因?yàn)閟tate的值刷新后會(huì)沒了,而localStorage的值不能響應(yīng)式地變化(Vue 僅可以對(duì)其管理的數(shù)據(jù)做響應(yīng)式處理,可以理解為 data 中的數(shù)據(jù),localStorage 并不在 Vue 的管理下,自然不會(huì)有響應(yīng)特性);
下面直接上computed處的代碼:
以上就是使用localStorage解決vuex的state的值在刷新之后沒有了這個(gè)問題的方法。
方法二:
在mount里面commit一次
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3?Composition?API優(yōu)雅封裝第三方組件實(shí)例
這篇文章主要為大家介紹了Vue3?Composition?API優(yōu)雅封裝第三方組件實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07利用vue.js實(shí)現(xiàn)被選中狀態(tài)的改變方法
下面小編就為大家分享一篇利用vue.js實(shí)現(xiàn)被選中狀態(tài)的改變方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02vue日常開發(fā)基礎(chǔ)Axios網(wǎng)絡(luò)庫封裝
這篇文章主要為大家介紹了vue日常開發(fā)基礎(chǔ)Axios網(wǎng)絡(luò)庫封裝示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08基于Vue實(shí)現(xiàn)HTML轉(zhuǎn)PDF并導(dǎo)出
這篇文章主要為大家介紹了三種方法,可以實(shí)現(xiàn)將HTML頁面轉(zhuǎn)為PDF并實(shí)現(xiàn)下載。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2022-04-04VuePress使用Algolia實(shí)現(xiàn)全文搜索
這篇文章主要為大家介紹了VuePress使用Algolia實(shí)現(xiàn)全文搜索示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07vue watch監(jiān)聽對(duì)象及對(duì)應(yīng)值的變化詳解
下面小編就為大家分享一篇vue watch監(jiān)聽對(duì)象及對(duì)應(yīng)值的變化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02Vue中的函數(shù)同步執(zhí)行導(dǎo)致的數(shù)據(jù)獲取失敗問題處理辦法
Vue中的mount中有兩個(gè)函數(shù),第一個(gè)函數(shù)執(zhí)行完后給data中的userInfo賦值,但是第二個(gè)函數(shù)獲取userInfo時(shí)是空值,這種情況可能是因?yàn)榈诙€(gè)函數(shù)在獲取 userInfo 時(shí)發(fā)生在第一個(gè)函數(shù)執(zhí)行完之前,所以本文給大家介紹了Vue中的函數(shù)同步執(zhí)行導(dǎo)致的數(shù)據(jù)獲取失敗問題處理辦法2024-08-08基于vue 動(dòng)態(tài)菜單 刷新空白問題的解決
這篇文章主要介紹了基于vue 動(dòng)態(tài)菜單 刷新空白問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08