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

Nuxt引入vue-persistedstate以及踩坑記錄

 更新時間:2023年10月11日 10:41:06   作者:小白白哦(??????)?  
這篇文章主要介紹了Nuxt引入vue-persistedstate以及踩坑記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

前言

項目需求,需要vuex進行路由持久化保存,結(jié)合nuxt框架進行記錄。

思路

監(jiān)聽數(shù)據(jù)變化, 每當(dāng)?shù)卿浲戤?

vuex 數(shù)據(jù)發(fā)生變化,就要將數(shù)據(jù)保存到瀏覽器 本地 (指用戶瀏覽器localStorage)

頁面打開時, 會嘗試將之前保存過的數(shù)據(jù)恢復(fù)到 vuex 當(dāng)中即可

有點復(fù)雜, 找個插件幫忙

實現(xiàn)緩存信息到本地

nuxtjsstore不能直接使用瀏覽器的lcoalStorage方法,

而且自己寫數(shù)據(jù)同步功能比較麻煩,

所以我們需要依賴一個插件vuex-persistedstate,該插件會把本地存儲的數(shù)據(jù)存儲到store

引入方法

1.安裝

npm install vuex-persistedstate  --save

nuxt.config.js配置文件

plugins: [
    '@/plugins/element-ui',
    // '@/plugins/localStorage'
    // 這里的引入, 如果是普通字符串, 就在服務(wù)端馬上運行
    // 如果是要等到瀏覽器再運行的代碼可以將配置改為對象, 并且 路徑作為 src 傳進去
    {
      src: '@/plugins/localStorage',
      // 如果只在瀏覽器加載的代碼, 可以添加一個 屬性 ssr: false
      ssr: false
    }
  ],

plugins/localStorage.js

console.log('測試自定義插件')
// 在這個自定義插件中配置 vuex-persistedstate
import createPersistedState from 'vuex-persistedstate'
// 這里什么都可以寫, 不過如果你需要用到 nuxt 本身, 必須通過 export 的方式暴露函數(shù)來接收
export default ({store}) => {
    // 如果想要等到 nuxt 加載完畢
    // 再執(zhí)行代碼, 有一個函數(shù)叫做 window.onNuxtReady()
    window.onNuxtReady(()=>{
        createPersistedState({
            // 在這里其實, 是想要將 vuex 數(shù)據(jù)存放到 localStorage 里面
            key: 'store'
        })(store)
    })
}

2.使用

store/index.js

// 用戶管理
export const state = () => ({
    //采用接口返回的數(shù)據(jù)結(jié)構(gòu)
    userInfo: {
        // token: '',
        // user: {}
    }
})
// 測試
// export const state = () => {
//     return {
//         // 這里是全局狀態(tài)數(shù)據(jù)保存的地方
//         abc: 123
//     }
// }
// 修改 state 里面的數(shù)據(jù), 必須使用 mutations 里面的函數(shù)
export const mutations = {
    // 每個屬性都是一個函數(shù), 作為修改 state 的方法
    // setAbc(state, data) {
    // 每個 mutation 函數(shù)都可以接受到兩個參數(shù)
    // 第一個是 state 對象本身
    // 第二是調(diào)用函數(shù)時額外添加的數(shù)據(jù)
    // 這里需要做的就是改變 state 數(shù)據(jù)
    // state.abc = data
    // 這樣外面調(diào)用這個函數(shù), 并且傳入數(shù)據(jù), 即可改變當(dāng)前的 abc 屬性
    setUserInfo(state, data) {
        state.userInfo = data
    }
};

項目中需要存儲的地方:

 //將結(jié)果發(fā)送到剛剛新建的vuex中,存儲,實現(xiàn)狀態(tài)持久化,不然刷新之后數(shù)據(jù)就沒了
 this.$store.commit('userstore/setUserInfo',res.data)

項目中需要使用的地方:

computed:{
        userInfo(){
            return this.$store.state.userstore.userInfo
        }
    },
    ----------渲染頭像-----------------
     <el-dropdown v-if="userInfo.token">
     <img :src="baseURL+userInfo.user.defaultAvatar"/>
        {{userInfo.user.nickname}}

修改完后重新啟動項目即可。

3.踩坑

引入后可能出現(xiàn)window is not defined 問題:

  • 檢查nuxt.config.js中是否將ssr置為false
  • 將nuxt.config.js中mode設(shè)置為’spa’

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue使用vue-draggable的全過程

    vue使用vue-draggable的全過程

    這篇文章主要介紹了vue使用vue-draggable的全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue項目如何配置public靜態(tài)資源路徑訪問

    vue項目如何配置public靜態(tài)資源路徑訪問

    這篇文章主要介紹了vue項目如何配置public靜態(tài)資源路徑訪問方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue前端自適應(yīng)布局實現(xiàn)教程(一步到位所有自適應(yīng))

    vue前端自適應(yīng)布局實現(xiàn)教程(一步到位所有自適應(yīng))

    ?自適應(yīng)布局是一種根據(jù)不同的設(shè)備屏幕分辨率進行布局的方式,它為不同的屏幕分辨率定義了不同的布局,下面這篇文章主要給大家介紹了關(guān)于vue前端自適應(yīng)布局實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • vue路由實現(xiàn)登錄攔截

    vue路由實現(xiàn)登錄攔截

    這篇文章主要介紹了vue路由如何實現(xiàn)登錄攔截,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-03-03
  • vue3超出文本展示el tooltip實現(xiàn)示例

    vue3超出文本展示el tooltip實現(xiàn)示例

    這篇文章主要為大家介紹了vue3超出文本展示el tooltip實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • VUE UPLOAD 通過ACTION返回上傳結(jié)果操作

    VUE UPLOAD 通過ACTION返回上傳結(jié)果操作

    這篇文章主要介紹了VUE UPLOAD 通過ACTION返回上傳結(jié)果操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue監(jiān)聽事件實現(xiàn)計數(shù)點擊依次增加的方法

    Vue監(jiān)聽事件實現(xiàn)計數(shù)點擊依次增加的方法

    今天小編就為大家分享一篇Vue監(jiān)聽事件實現(xiàn)計數(shù)點擊依次增加的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue3 setup訪問子組件的 DOM 元素的示例代碼

    vue3 setup訪問子組件的 DOM 元素的示例代碼

    使用setup的情況下這個時候我們無法使用this,注意在setup中setup是封閉的,不會將子組件事件暴露出來,所以要用defineExpose(),這篇文章主要介紹了vue3 setup訪問子組件的 DOM 元素,需要的朋友可以參考下
    2023-08-08
  • vuejs點擊class變化的實例

    vuejs點擊class變化的實例

    今天小編就為大家分享一篇vuejs點擊class變化的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • Vue.directive使用注意(小結(jié))

    Vue.directive使用注意(小結(jié))

    這篇文章主要介紹了Vue.directive使用注意(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08

最新評論

田阳县| 团风县| 杂多县| 方城县| 钟祥市| 汨罗市| 威远县| 枣阳市| 民乐县| 丰台区| 砚山县| 偃师市| 淅川县| 桐柏县| 穆棱市| 泸西县| 厦门市| 阿坝县| 克什克腾旗| 都兰县| 宣武区| 公安县| 绥滨县| 泸州市| 印江| 分宜县| 德钦县| 和政县| 东阳市| 枝江市| 浑源县| 阿城市| 襄城县| 车致| 临沂市| 德格县| 大冶市| 化州市| 尼木县| 丹巴县| 新野县|