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

vue3中如何使用Pinia實(shí)現(xiàn)數(shù)據(jù)持久化操作

 更新時(shí)間:2023年10月27日 14:06:15   作者:你的美,讓我癡迷  
使用vue3中的pinia,我們可以在多個(gè)頁(yè)面間共享數(shù)據(jù),但是一旦我們關(guān)閉或刷新頁(yè)面,這些數(shù)據(jù)就會(huì)丟失,因此,我們需要有一種數(shù)據(jù)持久化的解決方案,下面我們就來(lái)看看具體如何解決的吧

使用vue3中的pinia,我們可以在多個(gè)頁(yè)面間共享數(shù)據(jù),但是一旦我們關(guān)閉或刷新頁(yè)面,這些數(shù)據(jù)就會(huì)丟失,因此,我們需要有一種數(shù)據(jù)持久化的解決方案。

在記錄vue3中使用數(shù)據(jù)可持久化方式的同時(shí),我們順便記錄一下,在webstorm中編寫(xiě)uni-app代碼的一個(gè)過(guò)程。

一、首先,點(diǎn)擊安裝vue3(一般這個(gè)步驟,我們都需要通過(guò)下載壓縮包的方式來(lái)完成初始化安裝)

打開(kāi)package.json,我們發(fā)現(xiàn),默認(rèn)uni-app為我們預(yù)裝的vue3版本為:3.2.45。

二、使用命令:npm install vue@latest,升級(jí)Vue3的版本至最新的版本:3.3.4。

此時(shí)命令行提示:需要npm audit fix --force,但是經(jīng)測(cè)試,這個(gè)命令一旦執(zhí)行,就跑不起來(lái)了。

三、安裝pinia

理論上,此時(shí)可使用命令 npm install pinia 來(lái)直接安裝pinia的默認(rèn)最新版本:2.1.6。但是測(cè)試發(fā)現(xiàn),采用將pinia安裝在vue上時(shí)會(huì)發(fā)現(xiàn),控制臺(tái)會(huì)報(bào)錯(cuò):

Uncaught SyntaxError: The requested module '/node_modules/pinia/node_modules/vue-demi/lib/index.mjs?v=f43e2f61' does not provide an export named 'hasInjectionContext' 

在小程序的編譯器中也會(huì)報(bào)錯(cuò):

"hasInjectionContext" is not exported by "node_modules/pinia/node_modules/vue-demi/lib/index.mjs", imported by
 "node_modules/pinia/dist/pinia.mjs".
at ../node_modules/pinia/dist/pinia.mjs:6:9

猜測(cè)可能是版本不匹配的原因,網(wǎng)上有說(shuō)vue-demi的版本太低的緣故,通過(guò)命令:npm list vue-demi 我們查看,我們已安裝的 vue-demi的版本號(hào)為:0.14.6,且 vue-demi是在安裝pinia時(shí)附帶安裝的。

經(jīng)查詢(xún):Vue Demi是一款可以同時(shí)支持Vue2和3的通用的Vue庫(kù)的開(kāi)發(fā)工具,一般當(dāng)要?jiǎng)?chuàng)建一個(gè)Vue插件/庫(kù)時(shí),只需將vue-demi安裝為依賴(lài)項(xiàng)并將其導(dǎo)入,然后就能讓軟件包就會(huì)變得通用。 但實(shí)測(cè)升級(jí)vue-demi的最新版本就是0.14.6,所以通過(guò)升級(jí)vue-demi的方法不可行。

網(wǎng)上有一種可行的方案是降低pinia的版本號(hào):

這里,當(dāng)我們逐漸降低版本至2.0.36時(shí),該報(bào)錯(cuò)消失,編譯正常。至于具體什么原因,留待后續(xù)再研究,此處先記錄一下。

即,安裝pinia的命令應(yīng)該是:npm install pinia@2.0.36 --legacy-peer-deps

目前也只有該方法可行。

四、創(chuàng)建一個(gè)測(cè)試的store

創(chuàng)建測(cè)試文件 src/stores/count.js

import {defineStore} from "pinia";
import {computed, ref} from "vue";

export const useCountStore = defineStore('count', () => {
    const num = ref(0)
    const doubleNum = computed(() => {
        return num.value * 2
    })
    const add = () => {
        num.value++
    }
    return {num, doubleNum, add}
})

在app.vue文件中進(jìn)行測(cè)試:

    <view>當(dāng)前值為:{{ num }}-- {{doubleNum}}</view>
    <button @click="add">點(diǎn)擊num+1</button>
</template>

<script setup>
import {useCountStore} from "../../stores/count";
import {storeToRefs} from "pinia";

const countStore = useCountStore()
const {num, doubleNum} = storeToRefs(countStore)
const {add} = countStore
</script>

此時(shí),如果有多個(gè)頁(yè)面,那么數(shù)據(jù)在多個(gè)頁(yè)面之間是可以保持的,但是如果我們一旦刷新頁(yè)面,或者關(guān)閉瀏覽器再打開(kāi),則會(huì)發(fā)現(xiàn)數(shù)據(jù)會(huì)丟失。此時(shí),我們就需要一個(gè)數(shù)據(jù)持久化的解決方案。

數(shù)據(jù)持久化的原因,即將數(shù)據(jù)寫(xiě)入客戶(hù)端本地進(jìn)行存儲(chǔ)和讀取,一般使用的是localStore和sessionStore,在小程序端,需要使用setStore的方式進(jìn)行存儲(chǔ)。理論上,我們可以自己動(dòng)手去實(shí)現(xiàn)這個(gè)功能,但是在這塊,已有現(xiàn)成的成熟的三方庫(kù)可以使用。

在選擇庫(kù)的時(shí)候,第一次我選擇了pinia-plugin-persist這個(gè)庫(kù),應(yīng)該感覺(jué)其名稱(chēng)比較精簡(jiǎn),不過(guò)后來(lái)發(fā)現(xiàn),pinia-plugin-persist這款插件很久沒(méi)維護(hù)了,其次文檔非常簡(jiǎn)略,于是,又切換為大家都在使用的:pinia-plugin-persistedstate,這款庫(kù)的文檔很詳細(xì)(文檔地址:https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/)。

安裝命令:

npm i pinia-plugin-persistedstate

使用起來(lái)也很方便,如:簡(jiǎn)單開(kāi)啟數(shù)據(jù)持久化的方式,在main.js文件中進(jìn)行安裝:

import {createPinia} from "pinia";
import piniaPersist from 'pinia-plugin-persistedstate'

const pinia = createPinia();
pinia.use(piniaPersist)

在count.js文件中,添加第三個(gè)參數(shù):

{
    persist:true
}

即可簡(jiǎn)單開(kāi)啟,數(shù)據(jù)的可持久化,默認(rèn)數(shù)據(jù)是存儲(chǔ)在localStore中的,因此關(guān)閉瀏覽器再打開(kāi),數(shù)據(jù)也是存在的。

但是,當(dāng)我們將vue用于開(kāi)發(fā)小程序時(shí),以往的localStore存儲(chǔ)方案就行不通了。此時(shí),我們就需要重新配置數(shù)據(jù)持久化。參考如下:

{
    // 數(shù)據(jù)持久化配置
    persist: {
        // enabled: true,
        // 調(diào)整為兼容多端的API
        storage: {
            getItem(key) {
                return uni.getStorageSync(key)
            },
            setItem(key, value) {
                uni.setStorageSync(key, value)
            }
        }
    }

大家可以根據(jù)自己的實(shí)際開(kāi)發(fā)場(chǎng)景,來(lái)完成自己的pinia數(shù)據(jù)持久化配置。

到此這篇關(guān)于vue3中如何使用Pinia實(shí)現(xiàn)數(shù)據(jù)持久化操作的文章就介紹到這了,更多相關(guān)vue3 Pinia數(shù)據(jù)持久化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue單向數(shù)據(jù)綁定和雙向數(shù)據(jù)綁定方式

    vue單向數(shù)據(jù)綁定和雙向數(shù)據(jù)綁定方式

    這篇文章主要介紹了vue單向數(shù)據(jù)綁定和雙向數(shù)據(jù)綁定方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Vue3 diff算法的簡(jiǎn)單解刨

    Vue3 diff算法的簡(jiǎn)單解刨

    如今Vue3的勢(shì)頭正盛,在diff算法方面也做了相應(yīng)的變化,利用到了最長(zhǎng)遞增子序列把性能又提升了一個(gè)檔次。本文就來(lái)帶大家簡(jiǎn)單解刨一下Vue3中的diff算法
    2023-02-02
  • vue前端實(shí)現(xiàn)login頁(yè)登陸驗(yàn)證碼代碼示例

    vue前端實(shí)現(xiàn)login頁(yè)登陸驗(yàn)證碼代碼示例

    現(xiàn)在我們管理后臺(tái)有個(gè)需求,就是登錄頁(yè)面需要獲取驗(yàn)證碼,用戶(hù)可以輸入驗(yàn)證碼后進(jìn)行登錄,這篇文章主要給大家介紹了關(guān)于vue前端實(shí)現(xiàn)login頁(yè)登陸驗(yàn)證碼的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • Vue組件庫(kù)ElementUI實(shí)現(xiàn)表格列表分頁(yè)效果

    Vue組件庫(kù)ElementUI實(shí)現(xiàn)表格列表分頁(yè)效果

    這篇文章主要為大家詳細(xì)介紹了Vue組件庫(kù)ElementUI實(shí)現(xiàn)表格列表分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Vue實(shí)現(xiàn)天氣預(yù)報(bào)小應(yīng)用

    Vue實(shí)現(xiàn)天氣預(yù)報(bào)小應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)天氣預(yù)報(bào)小應(yīng)用,查詢(xún)一些城市的天氣情況,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue3(ts)類(lèi)型EventTarget上不存在屬性value的問(wèn)題

    vue3(ts)類(lèi)型EventTarget上不存在屬性value的問(wèn)題

    這篇文章主要介紹了vue3(ts)類(lèi)型EventTarget上不存在屬性value的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue keepAlive緩存清除問(wèn)題案例詳解

    vue keepAlive緩存清除問(wèn)題案例詳解

    這篇文章主要介紹了vue keepAlive緩存清除問(wèn)題案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • vue中button標(biāo)簽樣式和功能禁用的寫(xiě)法

    vue中button標(biāo)簽樣式和功能禁用的寫(xiě)法

    這篇文章主要介紹了vue中button標(biāo)簽樣式和功能禁用的寫(xiě)法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue 監(jiān)聽(tīng)鍵盤(pán)回車(chē)事件詳解 @keyup.enter || @keyup.enter.native

    vue 監(jiān)聽(tīng)鍵盤(pán)回車(chē)事件詳解 @keyup.enter || @keyup.enter.native

    今天小編就為大家分享一篇vue 監(jiān)聽(tīng)鍵盤(pán)回車(chē)事件詳解 @keyup.enter || @keyup.enter.native,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 前端實(shí)現(xiàn)不同角色登入展示不同頁(yè)面效果實(shí)例

    前端實(shí)現(xiàn)不同角色登入展示不同頁(yè)面效果實(shí)例

    要實(shí)現(xiàn)不同角色登錄跳轉(zhuǎn)不同的前端頁(yè)面,可以在登錄成功后,根據(jù)用戶(hù)的角色信息,使用路由跳轉(zhuǎn)到不同的頁(yè)面,這篇文章主要給大家介紹了關(guān)于前端實(shí)現(xiàn)不同角色登入展示不同頁(yè)面效果的相關(guān)資料,需要的朋友可以參考下
    2024-08-08

最新評(píng)論

北辰区| 东乡县| 乌什县| 云龙县| 久治县| 寿宁县| 福清市| 德昌县| 华阴市| 昌江| 瑞金市| 澄迈县| 桓台县| 吉安市| 乌拉特前旗| 嘉定区| 郸城县| 芷江| 德昌县| 桃源县| 象州县| 桐柏县| 余江县| 图木舒克市| 怀仁县| 河源市| 湖北省| 车致| 遂溪县| 丽水市| 东乌珠穆沁旗| 保德县| 萍乡市| 唐山市| 广安市| 无为县| 卓尼县| 盘山县| 长汀县| 琼结县| 民勤县|