亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue3基礎(chǔ)教程之pinia配置和用法

 更新時(shí)間:2025年06月14日 10:22:50   作者:Ares_前端  
Vue3項(xiàng)目常用Pinia管理狀態(tài),通過(guò)安裝和配置實(shí)現(xiàn)數(shù)據(jù)持久化,這篇文章主要介紹了vue3基礎(chǔ)教程之pinia配置和用法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

vue3 項(xiàng)目經(jīng)常使用狀態(tài)管理器來(lái)存儲(chǔ) 用戶信息、token、路由信息 等數(shù)據(jù),vite 項(xiàng)目中使用比較多的一般是 pinia 存儲(chǔ)庫(kù)。

1. 安裝pinia

npm install pinia

2. 配置pinia

創(chuàng)建 store 文件夾,在里面創(chuàng)建 index.js ,在 store 下面創(chuàng)建 modules 文件夾,用來(lái)管理不同倉(cāng)庫(kù)。

index.js文件

使用一個(gè) index 文件進(jìn)行統(tǒng)一的導(dǎo)出,就不需要在使用多個(gè)倉(cāng)庫(kù)的時(shí)候?qū)懚鄠€(gè) import 了。

import { createPinia } from "pinia";
// 導(dǎo)出modules下面的所有倉(cāng)庫(kù)
import { userStore } from "./modules/user"
...
...

const pinia = createPinia()

// 組合api添加$reset方法,用于重置狀態(tài)
pinia.use(({ store }) => {
  const initialState = JSON.parse(JSON.stringify(store.$state))
  store.$reset = () => {
    store.$patch(initialState)
  }
})

export default pinia

export { userStore }

組合api的寫(xiě)法是沒(méi)有重置功能的,需要單獨(dú)寫(xiě)一個(gè) $reset 的方法重置數(shù)據(jù)。

modules下面的倉(cāng)庫(kù)文件

// 創(chuàng)建用戶信息倉(cāng)庫(kù)
import { defineStore } from 'pinia'
export const userStore = defineStore('user', () => {
  let name = ref('張三')
  let age = ref(18)
  let obj = reactive({
    username: '韓梅梅',
    address: '北京'
  })

  const changeName = (val) => {
    name.value = val
  }

  return {
    name,
    age,
    obj,
    changeName
  }
})

main.js中引入pinia倉(cāng)庫(kù)

...
import pinia from '@/store'
app.use(pinia)
...

app.mount('#app')

vue頁(yè)面的使用

<template>
  <div>
    <div>{{ user.name }}</div>
    <el-button type="primary" @click="changeName1">修改姓名</el-button>
    <div>{{ age }}</div>
    <el-button type="primary" @click="changeName2">修改年齡</el-button>
  </div>
</template>

<script setup>
import { userStore } from '@/store'
import { storeToRefs } from 'pinia' 
const user = userStore()

// 修改里面的值有3種寫(xiě)法
const changeName1 = () => {
  // 第一種 => 直接賦值
  user.name = '李四'
  // 第二種 => 使用$patch
  user.$patch({
    name: '李四'
  })
  // 第三種 => 使用倉(cāng)庫(kù)里面的方法
  user.changeName('李四')
};


// 如果是使用解構(gòu)的方式取值的話需要使用這個(gè)方法,否則取出來(lái)的值不是響應(yīng)式的
let { age } = storeToRefs(user)
// 修改年齡
const changeName2 = () => {
    age.value++
}

// 使用重置方法
const reset = () => {
  user.$reset();
}
</script>

storeToRefs 這個(gè)方法是修改解構(gòu)賦值的方法從倉(cāng)庫(kù)取值,讓取出來(lái)的值也是響應(yīng)式的。

3. 持久化的插件使用

存儲(chǔ)在倉(cāng)庫(kù)的數(shù)據(jù)如果刷新頁(yè)面會(huì)丟失,之前都是手動(dòng)將每個(gè)值存到本地存儲(chǔ)中 localStorage 或者sessionStorage 種。pinia-plugin-persistedstate 插件是讓倉(cāng)庫(kù)中的數(shù)據(jù)自動(dòng)存儲(chǔ)到本地存儲(chǔ)中。

4. pinia-plugin-persistedstate

npm i pinia-plugin-persistedstate

5. 配置持久化插件

store 下面的 index.js 文件中編寫(xiě)。

第一種方法

如果所有倉(cāng)庫(kù)中的數(shù)據(jù)都需要存儲(chǔ)的情況下。

import { createPersistedState } from 'pinia-plugin-persistedstate' // 引入方法
pinia.use(createPersistedState({  
    storage: localStorage, 
    auto: true  // 自動(dòng)存儲(chǔ)所有倉(cāng)庫(kù)數(shù)據(jù)到localStorage
})) 

第二種方法

每個(gè)倉(cāng)庫(kù)單獨(dú)配置持久化的配置 => 將 auto: true 刪除。

modules 下面的 user.js 文件中編寫(xiě)。

// 創(chuàng)建用戶信息倉(cāng)庫(kù)
import { defineStore } from 'pinia'
export const userStore = defineStore('user', () => {
  ...
  ...
}, {
  // 在這個(gè)地方配置持久化
  persist: {
    ... 持久化配置如下
  }
})

持久化配置方式如下:

1. 第一種配置
persist: true  // 整個(gè)倉(cāng)庫(kù)持久化

2. 第二種配置 (pick 和 omit 二選一)
persist: {
    pick: ['obj.username', 'name'],  // 存儲(chǔ)哪些
    omit: ['obj.address']  // 忽略哪些不存儲(chǔ)
}

3. 第三種配置
persist: {
    storage: sessionStorage 存儲(chǔ)的位置
}

4. 第四種配置
persist: {
    key: 'my-userinfo' 存儲(chǔ)的名稱(chēng)
}

5. 第五種配置 (一個(gè)倉(cāng)庫(kù)每個(gè)參數(shù)不同的存儲(chǔ)方式)
persist: [
    {
      pick: ['name'],
      storage: localStorage,
      key: 'name'
    },
    {
      pick: ['age'],
      storage: sessionStorage,
      key: 'age'
    }
]

以上就是 piniapinia-plugin-persistedstate 插件的使用方式。

總結(jié)

到此這篇關(guān)于vue3基礎(chǔ)教程之pinia配置和用法的文章就介紹到這了,更多相關(guān)vue3 pinia配置和用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談vue加載優(yōu)化策略

    淺談vue加載優(yōu)化策略

    這篇文章主要介紹了淺談vue加載優(yōu)化策略,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • Vue防抖與節(jié)流的使用介紹

    Vue防抖與節(jié)流的使用介紹

    防抖和節(jié)流的作用都是防止函數(shù)多次調(diào)用,下面這篇文章主要給大家介紹了關(guān)于vue函數(shù)防抖與節(jié)流的正確使用方法,需要的朋友可以參考下
    2022-12-12
  • Vue.js生命周期鉤子中this指向的常見(jiàn)陷阱分析

    Vue.js生命周期鉤子中this指向的常見(jiàn)陷阱分析

    這篇文章主要介紹了Vue.js生命周期鉤子中this指向的常見(jiàn)陷阱分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • vue2+elementui進(jìn)行hover提示的使用

    vue2+elementui進(jìn)行hover提示的使用

    本文主要介紹了vue2+elementui進(jìn)行hover提示的使用,主要分為外部和內(nèi)部,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-11-11
  • Vue.js實(shí)現(xiàn)表格動(dòng)態(tài)增加刪除的方法(附源碼下載)

    Vue.js實(shí)現(xiàn)表格動(dòng)態(tài)增加刪除的方法(附源碼下載)

    Vue.js通過(guò)簡(jiǎn)潔的API提供高效的數(shù)據(jù)綁定和靈活的組件系統(tǒng)。在前端紛繁復(fù)雜的生態(tài)中,Vue.js有幸受到一定程度的關(guān)注,下面這篇文章主要給介紹了Vue.js實(shí)現(xiàn)表格動(dòng)態(tài)增加刪除的方法實(shí)例,文末提供了源碼下載,需要的朋友可以參考借鑒。
    2017-01-01
  • Element Notification通知的實(shí)現(xiàn)示例

    Element Notification通知的實(shí)現(xiàn)示例

    這篇文章主要介紹了Element Notification通知的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 淺談Vue.js應(yīng)用的四種AJAX請(qǐng)求數(shù)據(jù)模式

    淺談Vue.js應(yīng)用的四種AJAX請(qǐng)求數(shù)據(jù)模式

    本篇文章主要介紹了淺談Vue.js應(yīng)用的四種AJAX請(qǐng)求數(shù)據(jù)模式,本文將詳細(xì)介紹在Vue應(yīng)用程序中實(shí)現(xiàn)AJAX的四個(gè)方法,有興趣的可以了解一下
    2017-08-08
  • 如何使用ant-design-vue的Table組件

    如何使用ant-design-vue的Table組件

    這篇文章主要介紹了如何使用ant-design-vue的Table組件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue實(shí)現(xiàn)導(dǎo)航欄效果(選中狀態(tài)刷新不消失)

    vue實(shí)現(xiàn)導(dǎo)航欄效果(選中狀態(tài)刷新不消失)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)導(dǎo)航欄效果,選中狀態(tài)刷新不消失,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • vue.js的computed,filter,get,set的用法及區(qū)別詳解

    vue.js的computed,filter,get,set的用法及區(qū)別詳解

    下面小編就為大家分享一篇vue.js的computed,filter,get,set的用法及區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03

最新評(píng)論