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

Vue3中的存儲(chǔ)庫pinia概述

 更新時(shí)間:2025年06月27日 16:00:43   作者:昭南。  
Pinia是Vue3的狀態(tài)管理庫,替代Vuex,支持跨組件共享狀態(tài)、修改數(shù)據(jù)及持久化存儲(chǔ),通過pinia-plugin-persist插件實(shí)現(xiàn)數(shù)據(jù)持久化,需在main.ts和store配置中引入,本文給大家介紹Vue3中的存儲(chǔ)庫pinia,感興趣的朋友一起看看吧

1、pinia是什么?

如果你學(xué)過Vue2,那么你一定使用過Vuex。我們都知道Vuex在Vue2中主要充當(dāng)狀態(tài)管理的角色,所謂狀態(tài)管理,簡單來說就是一個(gè)存儲(chǔ)數(shù)據(jù)的地方,存放在Vuex中的數(shù)據(jù)在各個(gè)組件中都能訪問到,它是Vue生態(tài)中重要的組成部分。

在Vue3中,可以使用傳統(tǒng)的Vuex來實(shí)現(xiàn)狀態(tài)管理,也可以使用最新的pinia來實(shí)現(xiàn)狀態(tài)管理,我們來看看官網(wǎng)如何解釋pinia的。

Pinia 是 Vue 的存儲(chǔ)庫,它允許您跨組件/頁面共享狀態(tài)。

2.安裝

npm install pinia

3、main.ts使用

import { createApp } from "vue";
import App from "./App.vue";
const app = createApp(App);
import { createPinia } from "pinia";
const pinia = createPinia();
app.use(pinia);
app.mount("#app");

4、使用store

// 想要使用必須先引入 defineStore;
import { defineStore } from 'pinia';
// 這里我們使用的是es6 的模塊化規(guī)范進(jìn)行導(dǎo)出的。
// defineStore 方法有兩個(gè)參數(shù)
// 第一個(gè)參數(shù)是模塊化名字(也就相當(dāng)于身份證一樣,不能重復(fù))
// 第二個(gè)參數(shù)是選項(xiàng),對象里面有三個(gè)屬性,相比于vuex 少了一個(gè) mutations.
export const useStore = defineStore('main', {
  state:()=> {  // 存放的就是模塊的變量
    return {
      name: "小豬課堂",
      age: 25,
      sex: "男",
      num:13
    }
  },
  getters: { // 相當(dāng)于vue里面的計(jì)算屬性,可以緩存數(shù)據(jù)
  },
  actions: { // 可以通過actions 方法,改變 state 里面的值。
  }
})

5、讀取state數(shù)據(jù)

<template>
  <p>姓名:{{ name }}</p>
  <p>年齡:{{ age }}</p>
  <p>性別:{{ sex }}</p>
</template>
<script setup lang="ts">
    import { ref } from "vue";
    import { useUsersStore } from "../src/store/user";
    const store = useUsersStore();
    const name = ref<string>(store.name);
    const age = ref<number>(store.age);
    const sex = ref<string>(store.sex);
</script>

解構(gòu)代碼如下:

<template>
  <h1>
    <!-- 使用pinia -->
    {{ count }} <br />
    {{ num }} <br />
    <input type="text" v-model="count">
  </h1>
</template>
<script lang="ts" setup>
// 引入pinia
import { useStoreIndex } from "@/store/index";
// storeToRefs將state中的變量解構(gòu)出來,解構(gòu)出來的數(shù)據(jù)是雙向聯(lián)動(dòng)的,是ref對象
import { storeToRefs } from "pinia";
let store = useStoreIndex()
// 兩種方法都可以解構(gòu)出來state數(shù)據(jù),但是普通解構(gòu)出來的無法實(shí)現(xiàn)雙向聯(lián)動(dòng)
const { count, num } = storeToRefs(store);
</script>

6、修改多個(gè)數(shù)據(jù)

const handleAdd = () => {
  // 方法1
  // store.name=李四
  // 方法2:可以同時(shí)修改多個(gè)數(shù)據(jù)
  store.$patch({
    sex: store.sex + 1,
    num:store.num+10
  });
};

7、持久化存儲(chǔ)

7.1 安裝:pinia-plugin-persist

npm install pinia-plugin-persist

7.2 在main.ts中引入

// 1 引入pinia,并解構(gòu)賦值其中的createPinia 方法
import { createPinia } from 'pinia';
const pinia = createPinia();
// 引入持久化存儲(chǔ)插件
import piniaPersist from 'pinia-plugin-persist'
// 在pinia中使用持久化存儲(chǔ)插件
pinia.use(piniaPersist);
// 2 在vue實(shí)例中使用pinia
app.use(pinia)

7.3 在store/index.ts中引入.與state、actions同級(jí)

persist: { // 開啟存儲(chǔ)
    enabled: true,
    // 配置持久化
    strategies: [
      {
        // key是屬性,可以省略,省略默認(rèn)是defineStore第一個(gè)屬性main
        key:"zx",
        // 指定存儲(chǔ)的位置以及存儲(chǔ)的變量都有哪些,該屬性可以不寫,
        //在不寫的情況下,默認(rèn)存儲(chǔ)到 sessionStorage 里面,默認(rèn)存儲(chǔ) state 里面的所有數(shù)據(jù)。
        storage: localStorage,
        // paths 是一個(gè)數(shù)組,如果寫了 就會(huì)只存儲(chǔ) count 變量,當(dāng)然也可以寫多個(gè)。
        paths: ["count", "num", "token", "userName"]
      },
    ]
  },

到此這篇關(guān)于Vue3中的存儲(chǔ)庫pinia概述的文章就介紹到這了,更多相關(guān)Vue3 pinia內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue.js中前端如何處理從后端返回的Excel文件流詳解

    Vue.js中前端如何處理從后端返回的Excel文件流詳解

    這篇文章主要介紹了如何在Vue項(xiàng)目中使用axios處理后端返回的Excel文件流,并提供下載功能,文中通過代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2025-01-01
  • Vue.js 使用v-cloak后仍顯示變量的解決方法

    Vue.js 使用v-cloak后仍顯示變量的解決方法

    這篇文章主要介紹了Vue.js 使用v-cloak后仍顯示變量的解決方法 ,文中給大家提到了v-cloak的用法,需要的朋友可以參考下
    2018-11-11
  • vue利用openlayers實(shí)現(xiàn)動(dòng)態(tài)軌跡

    vue利用openlayers實(shí)現(xiàn)動(dòng)態(tài)軌跡

    這篇文章主要為大家介紹了vue利用openlayers實(shí)現(xiàn)動(dòng)態(tài)軌跡,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • vuejs父子組件通信的問題

    vuejs父子組件通信的問題

    本篇文章主要介紹了vue父子組件通信 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • Vue生命周期實(shí)例分析總結(jié)

    Vue生命周期實(shí)例分析總結(jié)

    Vue的生命周期就是vue實(shí)例從創(chuàng)建到銷毀的全過程,也就是new Vue()開始就是vue生命周期的開始。Vue實(shí)例有?個(gè)完整的?命周期,也就是從開始創(chuàng)建、初始化數(shù)據(jù)、編譯模版、掛載Dom->渲染、更新->渲染、卸載等?系列過程,稱這是Vue的?命周期
    2022-10-10
  • vue項(xiàng)目自適應(yīng)屏幕分辨率實(shí)現(xiàn)步驟

    vue項(xiàng)目自適應(yīng)屏幕分辨率實(shí)現(xiàn)步驟

    這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目自適應(yīng)屏幕分辨率實(shí)現(xiàn)的相關(guān)資料,作為前端人員,為了適配各種型號(hào)的電腦、手機(jī),我們往往離不開屏幕分辨率的適配,需要的朋友可以參考下
    2023-09-09
  • vue路由切換時(shí)取消之前的所有請求操作

    vue路由切換時(shí)取消之前的所有請求操作

    這篇文章主要介紹了vue路由切換時(shí)取消之前的所有請求操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 解決vue+router路由跳轉(zhuǎn)不起作用的一項(xiàng)原因

    解決vue+router路由跳轉(zhuǎn)不起作用的一項(xiàng)原因

    這篇文章主要介紹了解決vue+router路由跳轉(zhuǎn)不起作用的一項(xiàng)原因,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue如何自定義配置運(yùn)行run命令

    vue如何自定義配置運(yùn)行run命令

    這篇文章主要介紹了vue如何自定義配置運(yùn)行run命令,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue項(xiàng)目實(shí)現(xiàn)減少app.js和vender.js的體積操作

    vue項(xiàng)目實(shí)現(xiàn)減少app.js和vender.js的體積操作

    這篇文章主要介紹了vue項(xiàng)目實(shí)現(xiàn)減少app.js和vender.js的體積操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評(píng)論

团风县| 兴安县| 梁河县| 石屏县| 鲁甸县| 滨海县| 武定县| 石泉县| 东海县| 沙洋县| 钟祥市| 郓城县| 奎屯市| 南汇区| 郑州市| 文成县| 南宁市| 新竹市| 土默特左旗| 松溪县| 鲁山县| 醴陵市| 望谟县| 德令哈市| 石景山区| 自贡市| 隆尧县| 吉安市| 亳州市| 永康市| 望奎县| 太仆寺旗| 扬州市| 太原市| 寻甸| 贡嘎县| 永川市| 佛山市| 武宁县| 巫山县| 武川县|