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

在nuxt使用vueX代替storage的實(shí)現(xiàn)方案

 更新時(shí)間:2023年10月11日 10:29:50   作者:fireInMapleForest  
這篇文章主要介紹了在nuxt使用vueX代替storage的實(shí)現(xiàn)方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用vuex代替本地緩存storage

今天搬項(xiàng)目時(shí),發(fā)現(xiàn)頁(yè)面中有使用sessionStorage做緩存便于各頁(yè)面使用,但是搬到nuxt結(jié)構(gòu)下卻報(bào)錯(cuò)了,查詢發(fā)現(xiàn)是由于在vue-nuxt中是沒辦法使用window和document,所以本地緩存也會(huì)出問題。

因此只能找替代方案,于是想到了vueX(原本項(xiàng)目是沒有用的);

參照Nuxt使用Vuex將基礎(chǔ)store寫完了,結(jié)果卻發(fā)現(xiàn)頁(yè)面報(bào)錯(cuò)了:

Classic mode for store/ is deprecated and will be removed in Nuxt 3.

沒辦法繼續(xù)祭出百度大法,發(fā)現(xiàn)是 vuex經(jīng)典模式寫法將在Nuxt 3中刪除。

在nuxt不需要按照經(jīng)典模式寫了

//經(jīng)典模式
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = () => new Vuex.Store({
  state: {
    counter: 0
  },
  mutations: {
    addCounter(state) {
      state.counter++
    }
  }
})
export default store

區(qū)別在于:

1、不需要 modules 目錄,所有 modules 直接寫出 xxx.js 就是模塊了。

2、index中不需要 vue.use(vuex) 等模板代碼了,全部由 nuxt 完成。

3、action 需要自己寫,默認(rèn) nuxt會(huì)自動(dòng)配置生成。直接調(diào)用即可。

//新版示例
export  const state = () => ({
	userInfo: null,
	token: null,
})
export const getters = {
  getToken(state){
    return state.token
  },
}
export const mutations = {
  set_userInfo(state, userInfo) {
      state.userInfo = userInfo;
  },
  set_token(state, token) {
      state.token = token;
  },
}
export const actions = {
	//do ajax
}

獲取更改的方式還是沒變

this.$store.state.token;
this.$store.commit('set_token',token);

到這里基本上完成,當(dāng)我高高興興準(zhǔn)備繼續(xù)時(shí),刷新了下頁(yè)面,數(shù)據(jù)沒了?。。?!

nuxt中頁(yè)面刷新后原來的vueX的數(shù)據(jù)獲取不到了

這樣不行,只能繼續(xù)想辦法了,然后通過百度大法還真讓我找到了

nuxt中刷新頁(yè)面后防止store值丟失

按照這個(gè)我又開始了我的搬遷大業(yè),結(jié)果發(fā)現(xiàn)這個(gè)值只能在頁(yè)面徹底加載后才生效

這樣導(dǎo)致我在mouted生命周期里壓根沒法實(shí)現(xiàn),哦豁,這就很尷尬了。

后面我想了下我要是不加這個(gè)判斷會(huì)怎么樣,想到就干,還真成功了

//離開頁(yè)面 刷新前 將store中的數(shù)據(jù)存到session
    window.addEventListener('beforeunload', ()=> {
        sessionStorage.setItem("storeCache",JSON.stringify(ctx.store.state))
    });
    //頁(yè)面加載完成  將session中的store數(shù)據(jù)
    // window.addEventListener('load', ()=> {
        let storeCache = sessionStorage.getItem("storeCache")
        if(storeCache){
            // 將session中的store數(shù)據(jù)替換到store中
            ctx.store.replaceState(JSON.parse(storeCache));
        }
    // });

屏蔽掉后我成功在mouted中拿到了值。

搬遷大業(yè)不易啊,繼續(xù)努力?。?!

打開新窗口后,數(shù)值回歸初始值的問題

這是今天在搬遷代碼的時(shí)候發(fā)現(xiàn)另一個(gè)問題,正常情況下頁(yè)面路由跳轉(zhuǎn)都在同一窗口。

但是也有一些另外的情況,比如通過a標(biāo)簽的_blank屬性、window.open(url, ‘_blank’);等方式,重新打開一個(gè)窗口;這時(shí)我發(fā)現(xiàn),我本來的登錄狀態(tài)信息沒有了,緩存里也變成了初始值。

經(jīng)過調(diào)試發(fā)現(xiàn)跳轉(zhuǎn)重新打開頁(yè)面時(shí),部分代碼不生效了

因?yàn)檫@部分保存代碼有個(gè)前提,離開當(dāng)前頁(yè)面或者刷新才會(huì)生效,但是我是打開了新窗口,原有的窗口是沒有任何變化的,也就是說。

在我第一次登陸的時(shí)候,跳轉(zhuǎn)打開新窗口,此時(shí)得到的數(shù)據(jù)并不會(huì)是最新的登陸之后的信息,而會(huì)是初始值。

于是想了想能否使用路由守衛(wèi)進(jìn)行判斷,只要進(jìn)行了跳轉(zhuǎn)就保存一次,于是我就干了,我想著把js的代碼進(jìn)行更換為路由形式,嘗試了幾次終于是成功了

export default ( ctx ) => {
	let toU;
	ctx.app.router.afterEach((to, from) => {
		toU = to;
	})
	if(toU){
		sessionStorage.setItem("storeCache",JSON.stringify(ctx.store.state))
	}
	let storeCache = sessionStorage.getItem("storeCache")
	if(storeCache){
		// 將session中的store數(shù)據(jù)替換到store中
		ctx.store.replaceState(JSON.parse(storeCache));
	}
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),該方式只是個(gè)人項(xiàng)目中能夠?qū)崿F(xiàn),不保證廣泛性,僅作參考!希望大家多多支持腳本之家。

相關(guān)文章

  • vue中使用mxgraph的方法實(shí)例代碼詳解

    vue中使用mxgraph的方法實(shí)例代碼詳解

    這篇文章主要介紹了vue中使用mxgraph的方法實(shí)例代碼詳解,需要的朋友可以參考下
    2019-05-05
  • 詳解vue-video-player使用心得(兼容m3u8)

    詳解vue-video-player使用心得(兼容m3u8)

    這篇文章主要介紹了詳解vue-video-player使用心得(兼容m3u8),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Vue項(xiàng)目發(fā)布后瀏覽器緩存問題解決方案

    Vue項(xiàng)目發(fā)布后瀏覽器緩存問題解決方案

    在vue項(xiàng)目開發(fā)中一直有一個(gè)令人都疼的問題,就是緩存問題,這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目發(fā)布后瀏覽器緩存問題的解決方案,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • Vuex?localStorage的具體使用

    Vuex?localStorage的具體使用

    本文主要介紹了Vuex?localStorage的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 為什么vue中不建議使用空字符串作為className

    為什么vue中不建議使用空字符串作為className

    本文主要介紹了為什么vue中不建議使用空字符串作為className,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue 列表頁(yè)帶參數(shù)進(jìn)詳情頁(yè)的操作(router-link)

    Vue 列表頁(yè)帶參數(shù)進(jìn)詳情頁(yè)的操作(router-link)

    這篇文章主要介紹了Vue 列表頁(yè)帶參數(shù)進(jìn)詳情頁(yè)的操作(router-link),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 基于vue2.0動(dòng)態(tài)組件及render詳解

    基于vue2.0動(dòng)態(tài)組件及render詳解

    下面小編就為大家分享一篇基于vue2.0動(dòng)態(tài)組件及render詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue 實(shí)現(xiàn)input表單元素的disabled示例

    vue 實(shí)現(xiàn)input表單元素的disabled示例

    今天小編就為大家分享一篇vue 實(shí)現(xiàn)input表單元素的disabled示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • vxe-list?vue?如何實(shí)現(xiàn)下拉框的虛擬列表

    vxe-list?vue?如何實(shí)現(xiàn)下拉框的虛擬列表

    這篇文章主要介紹了vxe-list?vue?如何實(shí)現(xiàn)下拉框的虛擬列表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • el-menu修改item顏色的實(shí)現(xiàn)

    el-menu修改item顏色的實(shí)現(xiàn)

    本文主要介紹了el-menu修改item顏色的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

德阳市| 滁州市| 稻城县| 自贡市| 霸州市| 鲁山县| 大兴区| 台州市| 天全县| 吉木萨尔县| 德格县| 永登县| 磐安县| 汕头市| 澄江县| 布尔津县| 依兰县| 登封市| 兴宁市| 天柱县| 大关县| 来宾市| 大渡口区| 元阳县| 定南县| 吴江市| 天台县| 平利县| 景泰县| 萨迦县| 新源县| 筠连县| 张家界市| 平舆县| 慈溪市| 浮梁县| 龙江县| 大足县| 锡林浩特市| 日照市| 左贡县|