国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue3狀態(tài)管理庫(kù)Pinia——自定義持久化插件

這篇具有很好參考價(jià)值的文章主要介紹了Vue3狀態(tài)管理庫(kù)Pinia——自定義持久化插件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

個(gè)人簡(jiǎn)介

??個(gè)人主頁(yè): 前端雜貨鋪
???♂?學(xué)習(xí)方向: 主攻前端方向,正逐漸往全干發(fā)展
??個(gè)人狀態(tài): 研發(fā)工程師,現(xiàn)效力于中國(guó)工業(yè)軟件事業(yè)
??人生格言: 積跬步至千里,積小流成江海
??推薦學(xué)習(xí):??前端面試寶典 ??Vue2 ??Vue3 ??Vue2/3項(xiàng)目實(shí)戰(zhàn) ??Node.js??Three.js ??JS版算法
??個(gè)人推廣:每篇文章最下方都有加入方式,旨在交流學(xué)習(xí)&資源分享,快加入進(jìn)來(lái)吧

Pinia

內(nèi)容 參考鏈接
Vue3正式發(fā)布那么久了,你認(rèn)識(shí)Pinia了嗎? 認(rèn)識(shí)Pinia,搭建開(kāi)發(fā)環(huán)境
Pinia 核心概念 核心概念(Store、State、Getter、Action)
購(gòu)物車 Demo Pinia 實(shí)現(xiàn)簡(jiǎn)易版購(gòu)物車


??前言

就我們上篇文章中的 簡(jiǎn)易版購(gòu)物車實(shí)戰(zhàn) 而言,它的狀態(tài)是 不持久的,因?yàn)楫?dāng)我們對(duì)商品加/減,對(duì)單選/全選框進(jìn)行操作后,再 刷新頁(yè)面,就 又回到了最原始的狀態(tài),那么如何能記錄我們之前的操作呢,Pinia持久化插件就可以解決該問(wèn)題!


??Pinia 持久化插件

Pinia 持久化插件是一個(gè)函數(shù),可以選擇返回要添加到 store 的屬性。

其基本思路為:監(jiān)聽(tīng) state 的變化,把每次變化的結(jié)果放到 localStorage 中。

我們?cè)?store 文件下創(chuàng)建 plugins文件,再創(chuàng)建 persistedState.ts 文件

Vue3狀態(tài)管理庫(kù)Pinia——自定義持久化插件,Vue3+Pinia+TS+Vite從入門到實(shí)戰(zhàn),狀態(tài)模式,Vue3,Pinia

persistedState.ts

我們導(dǎo)入 pinia,把 PiniaPluginContext 賦值給 context,為 PiniaPlugin 的 上下文。

通過(guò) context.store.$id(即模塊名) 我們可以獲取到 localStorage 的詳細(xì)內(nèi)容。

通過(guò) context.store.$patch 我們可以把數(shù)據(jù)存放到 pinia 對(duì)應(yīng)的模塊里。

通過(guò) context.store.$subscribe 我們可以在每次 state 發(fā)生變化時(shí),把它保存到 localStorage 中。

當(dāng)我們點(diǎn)擊 Age+1 按鈕時(shí),看一下 _storestate 的廬山真面目:

Vue3狀態(tài)管理庫(kù)Pinia——自定義持久化插件,Vue3+Pinia+TS+Vite從入門到實(shí)戰(zhàn),狀態(tài)模式,Vue3,Pinia

import { PiniaPluginContext } from "pinia";

export function persistedState(context: PiniaPluginContext) {
    // 根據(jù)模塊名,拿到對(duì)應(yīng)localStorage
    const currentState = JSON.parse(
        localStorage.getItem(context.store.$id) || "{}"
    )

    // 把數(shù)據(jù)存放到pinia對(duì)應(yīng)的模塊里
    context.store.$patch(currentState)
    /**
     * 每次state發(fā)生變化時(shí),都把它保存在localStorage里
     * 參數(shù)一:當(dāng)前修改store的上下文,可以通過(guò)它獲取_store.storeId充當(dāng)鍵
     * 參數(shù)二:當(dāng)前修改的狀態(tài),可以充當(dāng)值
     */
    context.store.$subscribe((_store, state) => {
        console.log(_store)
        console.log(state)
        // 存入鍵值(依據(jù)上圖數(shù)據(jù)結(jié)構(gòu))(需要序列化)
        localStorage.setItem(_store.storeId, JSON.stringify(state))
    }, {
        // 組件卸載,依賴仍然存在
        detached: true
    })
}

shop.vue

在上一篇 Pinia實(shí)現(xiàn)簡(jiǎn)易版購(gòu)物車 的基礎(chǔ)上,我們對(duì) shop.vue 進(jìn)行補(bǔ)充,把 user.ts 也引入了進(jìn)來(lái),并進(jìn)行簡(jiǎn)單的使用(年齡+1)

<div>
    <button @click="userStore.age += 1">Age+1</button>
    {{ userStore.age }}
</div>
...
import { useUserStore } from './store/user';
const userStore = useUserStore();

index.ts

index.ts 中導(dǎo)入 persistedState,然后通過(guò) pinia 使用它

import { createPinia } from 'pinia'
import { persistedState } from './plugins/persistedState'

const pinia = createPinia()

// 使用插件
pinia.use(persistedState)

export default pinia

這樣我們的自定義持久化插件就完成啦~

Pinia自定義持久化插件


????本篇小結(jié)

本篇借助 Pinia 的一些屬性,把數(shù)據(jù)存儲(chǔ)到 localStorage,從而實(shí)現(xiàn)了數(shù)據(jù)的持久化。

其實(shí)也有一些現(xiàn)成的持久化插件,比如終端鍵入:npm i pinia-plugin-persist-S 并進(jìn)行相應(yīng)配置等,也可以實(shí)現(xiàn)數(shù)據(jù)的持久化(感興趣的小伙伴可以自行搜索 Pinia持久化插件 的具體內(nèi)容,學(xué)習(xí)安裝及相關(guān)配置)!

好啦,本篇文章到這里就要和大家說(shuō)再見(jiàn)啦,祝你這篇文章閱讀愉快,你下篇文章的閱讀愉快留著我下篇文章再祝!


參考資料:

  1. Pinia 官方文檔
  2. Pinia 教程 【作者:千鋒教育】

Vue3狀態(tài)管理庫(kù)Pinia——自定義持久化插件,Vue3+Pinia+TS+Vite從入門到實(shí)戰(zhàn),狀態(tài)模式,Vue3,Pinia文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-639019.html


到了這里,關(guān)于Vue3狀態(tài)管理庫(kù)Pinia——自定義持久化插件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【pinia持久化存儲(chǔ)】使用pinia和pinia-plugin-persistedstate依賴進(jìn)行數(shù)據(jù)的持久化存儲(chǔ)

    【pinia持久化存儲(chǔ)】使用pinia和pinia-plugin-persistedstate依賴進(jìn)行數(shù)據(jù)的持久化存儲(chǔ)

    使用pinia和pinia-plugin-persistedstate依賴進(jìn)行數(shù)據(jù)的持久化存儲(chǔ)。 存儲(chǔ)方式 : localStorage sessionStorage pinia-plugin-persistedstate 中文官網(wǎng) pinia 中文官網(wǎng) 安裝和使用 pinia ,請(qǐng)參考使用pinia文章。 安裝 pinia-plugin-persistedstate : 使用前先將 pinia-plugin-persistedstate添加到pinia實(shí)例上。 在添加的時(shí)

    2023年04月17日
    瀏覽(24)
  • Vue中如何進(jìn)行狀態(tài)持久化(LocalStorage、SessionStorage)

    Vue中如何進(jìn)行狀態(tài)持久化(LocalStorage、SessionStorage)

    在Vue應(yīng)用中,通常需要將一些狀態(tài)進(jìn)行持久化,以便在用戶關(guān)閉瀏覽器或刷新頁(yè)面后,仍能保留之前的狀態(tài)。常見(jiàn)的持久化方式包括 LocalStorage 和 SessionStorage 。本文將介紹如何使用這兩種方式來(lái)實(shí)現(xiàn)狀態(tài)的持久化。 LocalStorage 是HTML5中引入的一種持久化方式,它可以將數(shù)據(jù)存儲(chǔ)

    2024年02月09日
    瀏覽(21)
  • Pinia使用方法及持久化存儲(chǔ)

    Pinia使用方法及持久化存儲(chǔ)

    Pinia 是 Vue 的專屬狀態(tài)管理庫(kù),它允許你跨組件或頁(yè)面共享狀態(tài)。它跟 Vuex 有一定的相似度,但還是有很大的區(qū)別。 愿意看這篇博客的人,想必已經(jīng)看過(guò)了官方文檔,官方文檔很詳細(xì),包含各種使用情景和理論,因此本文不說(shuō)理論,只說(shuō)具體的使用方法,想深入研究的建議去

    2024年02月08日
    瀏覽(19)
  • Pinia 數(shù)據(jù)持久化儲(chǔ)存(pinia-plugin-persistedstate)

    Pinia 數(shù)據(jù)持久化儲(chǔ)存(pinia-plugin-persistedstate)

    插件官網(wǎng)地址: https://prazdevs.github.io/pinia-plugin-persistedstate/guide/config.html 這里對(duì)插件的安裝就不多贅述了,放兩張官網(wǎng)的截圖 使用命令:npm i pinia-plugin-persistedstate (1)將store的state中的全部數(shù)據(jù)進(jìn)行緩存,直接在state同級(jí)下面添加persist對(duì)象 此時(shí),默認(rèn)將數(shù)據(jù)存放在瀏覽器的

    2024年02月01日
    瀏覽(29)
  • pinia數(shù)據(jù)持久化,解決刷新state數(shù)據(jù)丟失

    pinia數(shù)據(jù)持久化,解決刷新state數(shù)據(jù)丟失

    下載插件 插件 pinia-plugin-persist 可以輔助實(shí)現(xiàn)數(shù)據(jù)持久化功能。 安裝插件 在入口文件main.js中 配置數(shù)據(jù)持久化 數(shù)據(jù)已經(jīng)存儲(chǔ)到了本地

    2024年02月11日
    瀏覽(25)
  • 快速搞懂Pinia及數(shù)據(jù)持久化存儲(chǔ)(詳細(xì)教程)

    一.安裝及使用Pinia 1.安裝Pinia兩種方式都可,根據(jù)個(gè)人習(xí)慣來(lái) 2.在main.ts 中引入并掛載到根實(shí)例 3.src目錄下新建store/study/index.js并寫入 Store 是用defineStore()定義的,它的第一個(gè)參數(shù)是一個(gè)獨(dú)一無(wú)二的id,也是必須傳入的,Pinia 將用它來(lái)連接 store 和 devtools。 defineStore()第二個(gè)參數(shù)可

    2023年04月15日
    瀏覽(27)
  • uniapp項(xiàng)目實(shí)戰(zhàn)第五章:小程序Pinia持久化

    uniapp項(xiàng)目實(shí)戰(zhàn)第五章:小程序Pinia持久化

    說(shuō)明:項(xiàng)目中 Pinia 用法平時(shí)完全一致,主要解決持久化插件 兼容性 問(wèn)題。 持久化存儲(chǔ)插件 持久化存儲(chǔ)插件: pinia-plugin-persistedstate 插件默認(rèn)使用 localStorage 實(shí)現(xiàn)持久化,小程序端不兼容,需要替換持久化 API。 網(wǎng)頁(yè)端持久化 API 多端持久化 API 參考代碼 現(xiàn)在可以持續(xù)化了

    2024年02月01日
    瀏覽(22)
  • 如何在 uniapp 里面使用 pinia 數(shù)據(jù)持久化 (pinia-plugin-persistedstate)

    想要在 uniapp 里面使用 pinia-plugin-persistedstate 會(huì)遇到的問(wèn)題就是 uniapp里面沒(méi)有瀏覽器里面的 sessionStorage localStorage 這些 api 。 我們只需要替換掉 pinia-plugin-persistedstate 默認(rèn)的儲(chǔ)存 api 就可以了。使用 createPersistedState 重新創(chuàng)建一個(gè)實(shí)例, 把里面的 storage 的參數(shù)修改為對(duì)應(yīng)的 uniapp

    2024年02月08日
    瀏覽(21)
  • 鴻蒙Harmony-PersistentStorage--持久化存儲(chǔ)UI狀態(tài)儲(chǔ)詳解

    鴻蒙Harmony-PersistentStorage--持久化存儲(chǔ)UI狀態(tài)儲(chǔ)詳解

    用簡(jiǎn)單的心境,對(duì)待復(fù)雜的人生,方能看淡得失,從容入世,瀟灑自如,心變得簡(jiǎn)單了,世界也就簡(jiǎn)單了 目錄 一,定義 二,限制條件 三,使用 LocalStorage和AppStorage都是運(yùn)行時(shí)的內(nèi)存,但是在應(yīng)用退出再次啟動(dòng)后,依然能保存選定的結(jié)果,是應(yīng)用開(kāi)發(fā)中十分常見(jiàn)的現(xiàn)象,這就

    2024年01月18日
    瀏覽(18)
  • vue3學(xué)習(xí)-Pinia狀態(tài)管理

    定義一個(gè)Store 這個(gè) name ,也稱為 id ,是必要的,Pinia 使用它來(lái)將 store 連接到 devtools。 將返回的函數(shù)命名為 use… 是跨可組合項(xiàng)的約定,以使其符合你的使用習(xí)慣。 使用 store 一旦 store 被實(shí)例化,你就可以直接在 store 上訪問(wèn) state 、 getters 和 actions 中定義的任何屬性 store 是一

    2024年02月14日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包