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

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

這篇具有很好參考價(jià)值的文章主要介紹了Pinia使用方法及持久化存儲(chǔ)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、簡(jiǎn)介

PiniaVue 的專(zhuān)屬狀態(tài)管理庫(kù),它允許你跨組件或頁(yè)面共享狀態(tài)。它跟 Vuex 有一定的相似度,但還是有很大的區(qū)別。

愿意看這篇博客的人,想必已經(jīng)看過(guò)了官方文檔,官方文檔很詳細(xì),包含各種使用情景和理論,因此本文不說(shuō)理論,只說(shuō)具體的使用方法,想深入研究的建議去看官方文檔,本文適合拿來(lái)即用。

Pinia 官方文檔

二、使用方法

1. 安裝

yarn add pinia
# 或者使用 npm
npm install pinia

2. 引入

main.ts

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'

const pinia = createPinia()

createApp(App).use(pinia).mount('#app') // vue3 的簡(jiǎn)寫(xiě)語(yǔ)法

不熟悉vue3簡(jiǎn)寫(xiě)語(yǔ)法的可以按照下面的方式去寫(xiě),效果是一樣的

main.ts

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'

const pinia = createPinia()
const app = createApp(App)

app.use(pinia)
app.mount('#app')

3. 創(chuàng)建文件

src 文件中,創(chuàng)建 store 文件,里面按模塊創(chuàng)建 ts 文件(也可以是 js)。

注意: pinia 不需要?jiǎng)?chuàng)建 modules 文件來(lái)區(qū)分模塊化,這是它和 vuex 的區(qū)別。

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

以登錄后保存用戶(hù)信息模塊舉例:

注意: 命名方式建議統(tǒng)一規(guī)范 use + id + store,示例 useUserStoreiduser

store/user.ts

import { defineStore } from 'pinia'

export const useUserStore = defineStore('user', {
  state: () => ({
    userInfo: {}
  }),
  actions: {
    SetUserInfo(data: any) {
      this.userInfo = data
    }
  }
})

4. 使用

先引入模塊,再將引入的模塊對(duì)象賦值給變量 store (命名隨意),如果不需要修改數(shù)據(jù),用 const 聲明變量,需要修改數(shù)據(jù)則使用 let 聲明。

注意:引入的模塊對(duì)象名要與模塊中 export const 聲明的一致。

.ts or .vue

import { useUserStore } from '@/store/user'

const store: any = useUserStore()

console.log(store.userInfo)

5. 修改數(shù)據(jù)

修改數(shù)據(jù)多種方法,可以直接修改,也可以使用 actions 修改。

方法1:直接修改

.ts or .vue

import { useUserStore } from '@/store/user'

const store = useUserStore()

store.userInfo = obj // obj 指新值
方法2:借助 actions 修改

.ts or .vue

import { useUserStore } from '@/store/user'

const store = useUserStore()

store.SetUserInfo(obj) // obj 指新值
方法3:多屬性修改

store/user.ts

import { defineStore } from 'pinia'

export const useUserStore = defineStore('user', {
  state: () => ({
    name: null,
    age: null,
    sex: null,
  }),
})

上面的方法都是用來(lái)修改單個(gè)屬性的,如果你需要一次修改多個(gè)屬性,雖然你可以重復(fù)操作上面的方法,但是 pinia 提供了新的方法,我更推薦使用官方推薦的方法。

.ts or .vue

import { useUserStore } from '@/store/user'

const store = useUserStore()

// 你可以這樣去修改(不建議)
store.name = '張三'
store.age = 24
store.sex = '男'

// 推薦使用下面這種方式 √
store.$patch({
  name: '張三',
  age: 24,
  sex: '男',
})

修改數(shù)據(jù)的場(chǎng)景及方法當(dāng)然不止這些,有些復(fù)雜的數(shù)據(jù)修改僅靠這些是難以實(shí)現(xiàn)的,不過(guò)本文的目的是簡(jiǎn)單講解 pinia 的使用方法,就不多做贅述了,想具體了解推薦去看 Pinia 官方文檔。

三、持久化存儲(chǔ)

PS:持久化插件推薦文末修正,pinia-plugin-persist 插件在 TypeScript 中出現(xiàn)類(lèi)型聲明問(wèn)題。不影響使用,但會(huì)有預(yù)警提示。2023-12-08

piniavuex 一樣,數(shù)據(jù)是短時(shí)的,只要一刷新頁(yè)面,數(shù)據(jù)就會(huì)恢復(fù)成初始狀態(tài),為了避免這個(gè)問(wèn)題,可以對(duì)其采用持久化保存方法。

持久化保存的原理是在 pinia 中數(shù)據(jù)更新時(shí),同步保存到 localStoragesessionStorage 中,刷新后從本地存儲(chǔ)中讀取數(shù)據(jù),你可以選擇自己去寫(xiě),但是實(shí)現(xiàn)起來(lái)并不像想象中那么容易,當(dāng)然,也沒(méi)那么難。

我推薦使用插件去實(shí)現(xiàn)持久化存儲(chǔ),這樣更便捷,省時(shí)省力。推薦插件為 pinia-plugin-persist,當(dāng)然,實(shí)現(xiàn)持久化存儲(chǔ)的插件肯定不止這一種,想用別的也無(wú)所謂,本文僅對(duì)這款插件講解使用方法。

1. 安裝插件

yarn add pinia-plugin-persist
# 或者使用 npm
npm install pinia-plugin-persist

2. 引入插件

和引入 pinia 一樣,在 main.ts 中引入。

mian.ts

import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia'
import piniaPersist from 'pinia-plugin-persist'

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

createApp(App).use(pinia).mount('#app')

3. 使用插件

方式1:默認(rèn)保存

下面這種寫(xiě)法會(huì)將當(dāng)前模塊中的所有數(shù)據(jù)都進(jìn)行持久化保存,默認(rèn)保存在 sessionStorage 中, key 為模塊 id,刷新頁(yè)面不需要手動(dòng)讀取數(shù)據(jù),插件會(huì)自動(dòng)讀取。

store/user.ts

import { defineStore } from 'pinia'

export const useUserStore = defineStore('user', {
  state: () => ({
    name: null,
    age: null,
    sex: null,
  }),
  persist: {
    enabled: true // true 表示開(kāi)啟持久化保存
  }
})
方式2:設(shè)置 key 、指定保存內(nèi)容

你可以主動(dòng)設(shè)置 key 名,也可以指定哪些數(shù)據(jù)保存,默認(rèn)會(huì)保存當(dāng)前模塊全部數(shù)據(jù)。

store/user.ts

export const useUserStore = defineStore('storeUser', {
  state: () => ({
    name: null,
    age: null,
    sex: null,
  }),
  persist: {
    enabled: true,
    strategies: [
      {
        key: 'user',
        storage: localStorage,
        paths: ['name'] 
      },
    ],
  },
})

你甚至可以對(duì)不同數(shù)據(jù)設(shè)置不同的本地存儲(chǔ)方式。

store/user.ts

export const useUserStore = defineStore('storeUser', {
  state: () => ({
    name: null,
    age: null,
    sex: null,
  }),
  persist: {
    enabled: true,
    strategies: [
      { storage: sessionStorage, paths: ['name'] },
      { storage: localStorage, paths: ['age'] },
    ],
  },
})
方式3:保存到 cookie

保存到 cookie 中當(dāng)然也是可以的,不過(guò)需要手動(dòng)添加 cookie 的保存方式,同樣,此處也是推薦使用插件 js-cookie 來(lái)完成。

npm install js-cookie

store/user.ts

import Cookies from 'js-cookie'

const cookiesStorage: Storage = {
  setItem (key, state) {
    return Cookies.set(key, state.accessToken, { expires: 3 }) // 設(shè)置有效期 3 天,不設(shè)置默認(rèn)同 sessionStorage 有效期一致
  },
  getItem (key) {
    return JSON.stringify({
      accessToken: Cookies.get(key),
    })
  },
}

export const useUserStore = defineStore('storeUser', {
  state: () => ({
    name: null,
    age: null,
    sex: null,
    accessToken: 'xxxxxxxxx',
  }),
  persist: {
    enabled: true,
    strategies: [
      {
        storage: cookiesStorage,
        paths: ['accessToken'] // cookie 一般用來(lái)保存 token
      },
    ],
  },
})

四、2023-12-08更新:持久化存儲(chǔ)插件推薦修改

以下內(nèi)容為 2023-12-08 更新。

pinia-plugin-persist 在 typeScript 中有類(lèi)型聲明問(wèn)題。推薦插件改為 pinia-plugin-persistedstate。官網(wǎng)地址如下:

pinia-plugin-persistedstate 中文官網(wǎng)

官網(wǎng)的文檔非常詳細(xì),且使用方法與 pinia-plugin-persist 類(lèi)似,因此本文不做過(guò)多贅述,僅簡(jiǎn)要描述下使用方法。

1、安裝插件

npm i pinia-plugin-persistedstate

2、引入插件

main.ts

import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'

const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)

3、使用插件

import { defineStore } from 'pinia'

export const useStore = defineStore('main', {
  state: () => {
    return {
      someState: '你好 pinia',
    }
  },
  persist: true,
})

只需要添加 persist: true, 整個(gè) store 都將被持久化存儲(chǔ)。

當(dāng)然也可以指定部分?jǐn)?shù)據(jù)持久化,方法如下:

import { defineStore } from 'pinia'

export const useUserStore = defineStore('user', {
  state: () => ({
    name: null,
    age: null,
    sex: null,
    info: {
    	des: null
    }
  }),
  persist: {
    paths: ['name', 'info.des'],
  },
})

這樣則只有 name,info.des 被持久化保存了。


文章到此就結(jié)束了,如果有需要作者補(bǔ)充或修正的,歡迎在評(píng)論區(qū)留言。

END文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-481380.html

到了這里,關(guān)于Pinia使用方法及持久化存儲(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(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)文章

  • 如何在 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)
  • Kali Live Boot把Kali 裝在U盤(pán)(不想重裝電腦使用kali的方法)并持久化 詳細(xì)

    Kali Live Boot把Kali 裝在U盤(pán)(不想重裝電腦使用kali的方法)并持久化 詳細(xì)

    我只有一臺(tái)電腦,又想用kali,那只能在虛擬機(jī)安裝使用了,但是呢在虛擬機(jī)又不能使用電腦的硬件,比如無(wú)線(xiàn)網(wǎng)卡,當(dāng)然另外買(mǎi)的除外,我說(shuō)的是筆記本自帶的網(wǎng)卡。而用這個(gè)方法就相當(dāng)于在你的電腦上裝了kali,但是又不會(huì)影響你之前用的系統(tǒng)。另外你還可以帶著你的kali去網(wǎng)

    2024年02月05日
    瀏覽(25)
  • 前端開(kāi)發(fā)小技巧 - 【Vue3 + TS】 - 在 TS + Vue3 中使用 Pinia,實(shí)現(xiàn) Pinia 的持久化,優(yōu)化Pinia(倉(cāng)庫(kù)統(tǒng)一管理)

    前端開(kāi)發(fā)小技巧 - 【Vue3 + TS】 - 在 TS + Vue3 中使用 Pinia,實(shí)現(xiàn) Pinia 的持久化,優(yōu)化Pinia(倉(cāng)庫(kù)統(tǒng)一管理)

    ts 中使用 pinia 和 Vue3 基本一致,唯一的不同點(diǎn)在于,需要根據(jù)接口文檔給 state 標(biāo)注類(lèi)型,也要給 actions 標(biāo)注類(lèi)型; 以下都是 組合式API 的寫(xiě)法, 選項(xiàng)式API 的寫(xiě)法大家可以去官網(wǎng)看看; Pinia; 持久化插件 - pinia-plugin-persistedstate; 目標(biāo)文件: src/types/user.d.ts (這里以 user.d.t

    2024年04月09日
    瀏覽(31)
  • 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日
    瀏覽(27)
  • 【k8s存儲(chǔ)--使用OpenEBS做持久化存儲(chǔ)】

    【k8s存儲(chǔ)--使用OpenEBS做持久化存儲(chǔ)】

    使用OpenEBS,你可以將有持久化數(shù)據(jù)的容器,像對(duì)待其他普通容器一樣來(lái)對(duì)待。OpenEBS本身也是通過(guò)容器來(lái)部署的,支持Kubernetes、Swarm、Mesos、Rancher編排調(diào)度,存儲(chǔ)服務(wù)可以分派給每個(gè)pod、應(yīng)用程序、集群或者容器級(jí)別,包括: 跨節(jié)點(diǎn)的數(shù)據(jù)持久化 跨可用區(qū)和云廠(chǎng)商的數(shù)據(jù)同步

    2024年04月23日
    瀏覽(26)
  • 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)
  • Vue3狀態(tài)管理庫(kù)Pinia——自定義持久化插件

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

    個(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??

    2024年02月13日
    瀏覽(30)
  • K8S使用持久化卷存儲(chǔ)到NFS(NAS盤(pán))

    K8S使用持久化卷存儲(chǔ)到NFS(NAS盤(pán))

    參考文章:K8S-v1.20中使用PVC持久卷 - 知乎 目錄 1、概念: 1.1 基礎(chǔ)概念 1.2 PV的配置 1.2.1 靜態(tài)PV配置 1.2.2 動(dòng)態(tài)PV配置 1.2.3 PVC與PV的綁定 1.2.4 PVC及PV的使用 2 部署PV及PVC 2.1 所有K8S機(jī)器都需要安裝NFS程序 2.2 僅針對(duì)需要暴露文件服務(wù)的機(jī)器開(kāi)啟NFS服務(wù) ? ? ? ? 2.2.1 Linux為例開(kāi)啟NFS服

    2023年04月26日
    瀏覽(27)
  • Docker Desktop使用宿主機(jī)Windows的配置文件持久化存儲(chǔ)數(shù)據(jù)

    Docker Desktop使用宿主機(jī)Windows的配置文件持久化存儲(chǔ)數(shù)據(jù)

    《微軟官網(wǎng)Windows 上的 Docker 引擎幫助文檔》 以Nginx為例 把Nginx的配置文件復(fù)制到Windows 注意:Windows的盤(pán)符是小寫(xiě)的,以及目錄直接是用反斜杠的!(我掉這坑里好久?。。。?修改宿主機(jī)的nginx.conf配置文件 刪除nginx容器 重啟啟動(dòng)一個(gè)新的Nginx容器 訪(fǎng)問(wèn)localhost

    2024年02月09日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包