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

vue3使用Pinia的store的組件化開發(fā)模式詳解

 更新時(shí)間:2025年04月18日 09:44:28   作者:墮落年代  
這篇文章主要介紹了vue3使用Pinia的store的組件化開發(fā)模式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、安裝與初始化

安裝Pinia

npm install pinia  # 或 yarn add pinia

目的:引入Pinia核心庫,為狀態(tài)管理提供基礎(chǔ)支持。

掛載Pinia實(shí)例

main.js中初始化并注入Vue應(yīng)用:

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

const app = createApp(App)
const pinia = createPinia()
app.use(pinia)  // 關(guān)鍵!全局啟用Pinia
app.mount('#app')

作用:創(chuàng)建Pinia實(shí)例并與Vue3應(yīng)用集成,使所有組件可訪問Store。

二、創(chuàng)建Store(函數(shù)式寫法)

使用Composition API風(fēng)格定義Store(推薦):

// stores/counter.js
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'

export const useCounterStore = defineStore('counter', () => {
  // 1. 定義狀態(tài)(相當(dāng)于data)
  const count = ref(0)
  
  // 2. 定義計(jì)算屬性(相當(dāng)于getters)
  const doubleCount = computed(() => count.value * 2)
  
  // 3. 定義操作方法(相當(dāng)于actions)
  function increment() {
    count.value++
  }

  // 暴露狀態(tài)與方法
  return { count, doubleCount, increment }
})

核心要點(diǎn):

  • defineStore第一個(gè)參數(shù)為Store唯一ID(需全局唯一)
  • 使用ref/computed等響應(yīng)式API管理狀態(tài)
  • 通過函數(shù)返回值暴露需共享的狀態(tài)與方法
  • 注意這個(gè)的id和實(shí)際沒什么關(guān)系,你最后還是使用useCounterStore 來獲取對(duì)象

三、在組件中使用Store

引入Store實(shí)例

在組件<script setup>中調(diào)用Store:

<script setup>
import { useCounterStore } from '@/stores/counter'
const counterStore = useCounterStore() // 實(shí)例化Store
</script>

特性:Store按需實(shí)例化,支持多組件復(fù)用且狀態(tài)自動(dòng)同步。

模板中訪問狀態(tài)與方法

   <template>
     <div>
       <p>當(dāng)前計(jì)數(shù):{{ counterStore.count }}</p>
       <p>雙倍計(jì)數(shù):{{ counterStore.doubleCount }}</p>
       <button @click="counterStore.increment()">+1</button>
     </div>
   </template>

響應(yīng)式原理:直接訪問Store的屬性會(huì)觸發(fā)Vue的響應(yīng)式更新。

四、高級(jí)功能擴(kuò)展

狀態(tài)持久化(示例)

安裝插件并配置:

npm install pinia-plugin-persistedstate
// main.js
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
pinia.use(piniaPluginPersistedstate)

在Store中啟用:

defineStore('counter', () => { /* ... */ }, {
  persist: {
    enabled: true,  // 開啟持久化
    storage: sessionStorage,  // 可選存儲(chǔ)方式(默認(rèn)localStorage)
    paths: ['count']  // 指定需持久化的字段
  }
})

作用:瀏覽器刷新后自動(dòng)恢復(fù)指定狀態(tài)。

模塊化開發(fā)

  • 創(chuàng)建多個(gè)Store文件(如userStore.js、cartStore.js
  • 組件按需引入不同Store,實(shí)現(xiàn)邏輯解耦

五、調(diào)試技巧

Vue Devtools集成

安裝瀏覽器插件后,可查看Store狀態(tài)變化歷史與時(shí)間旅行調(diào)試。

自定義插件

可開發(fā)日志插件跟蹤狀態(tài)變更(示例見網(wǎng)頁4的日志監(jiān)控代碼)。

總結(jié)

通過以上步驟可實(shí)現(xiàn):

  • ? 響應(yīng)式狀態(tài)管理:基于Composition API的Store聲明
  • ? 跨組件共享:多組件間高效同步復(fù)雜狀態(tài)
  • ? 可維護(hù)性:模塊化Store設(shè)計(jì)與類型安全(天然支持TS)
  • ? 擴(kuò)展性:通過插件實(shí)現(xiàn)持久化、日志等高級(jí)功能

對(duì)比Vuex,Pinia的函數(shù)式Store語法更簡(jiǎn)潔,且與Vue3的Composition API深度契合,推薦作為Vue3項(xiàng)目的首選狀態(tài)管理方案。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue中使用vue-cli接入融云實(shí)現(xiàn)即時(shí)通信

    vue中使用vue-cli接入融云實(shí)現(xiàn)即時(shí)通信

    這篇文章主要介紹了vue中使用vue-cli接入融云實(shí)現(xiàn)即時(shí)通信的相關(guān)資料,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • Vue生命周期區(qū)別詳解

    Vue生命周期區(qū)別詳解

    這篇文章主要介紹了Vue生命周期區(qū)別詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 解決vue2中使用elementUi打包報(bào)錯(cuò)的問題

    解決vue2中使用elementUi打包報(bào)錯(cuò)的問題

    這篇文章主要介紹了解決vue2中使用elementUi打包報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue filter介紹及詳細(xì)使用

    Vue filter介紹及詳細(xì)使用

    這篇文章主要介紹了Vue filter介紹及詳細(xì)使用,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-04-04
  • vue父子組件傳值不能實(shí)時(shí)更新的解決方法

    vue父子組件傳值不能實(shí)時(shí)更新的解決方法

    Vue是一個(gè)以數(shù)據(jù)驅(qū)動(dòng)、組件化的前端框架,其中組件化是Vue中較為重要的概念之一,組件之間的通信則成為Vue中較為普遍的需求,下面這篇文章主要給大家介紹了關(guān)于vue父子組件傳值不能實(shí)時(shí)更新的解決方法,需要的朋友可以參考下
    2023-05-05
  • Vue3組件中g(shù)etCurrentInstance()獲取App實(shí)例,但是返回null的解決方案

    Vue3組件中g(shù)etCurrentInstance()獲取App實(shí)例,但是返回null的解決方案

    這篇文章主要介紹了Vue3組件中g(shù)etCurrentInstance()獲取App實(shí)例,但是返回null的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Vue2路由動(dòng)畫效果的實(shí)現(xiàn)代碼

    Vue2路由動(dòng)畫效果的實(shí)現(xiàn)代碼

    本篇文章主要介紹了Vue2路由動(dòng)畫效果的實(shí)現(xiàn)代碼,可以根據(jù)不同的路徑去改變動(dòng)畫的效果,有興趣的可以了解一下
    2017-07-07
  • vue3+vite+antd如何實(shí)現(xiàn)自定義主題

    vue3+vite+antd如何實(shí)現(xiàn)自定義主題

    這篇文章主要介紹了vue3+vite+antd如何實(shí)現(xiàn)自定義主題問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue狀態(tài)管理工具Pinia的安裝與使用教程

    Vue狀態(tài)管理工具Pinia的安裝與使用教程

    這篇文章主要介紹了Vue狀態(tài)管理工具Pinia的安裝與使用,一步一步學(xué)習(xí)如何將pinia運(yùn)用到項(xiàng)目實(shí)戰(zhàn)中去,文中有詳細(xì)的安裝教程和使用方法,并通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • 關(guān)于vue中根據(jù)用戶權(quán)限動(dòng)態(tài)添加路由的問題

    關(guān)于vue中根據(jù)用戶權(quán)限動(dòng)態(tài)添加路由的問題

    每次路由發(fā)生變化時(shí)都需要調(diào)用一次路由守衛(wèi),并且store中的數(shù)據(jù)會(huì)在每次刷新的時(shí)候清空,因此需要判斷store中是否有添加的動(dòng)態(tài)路由,本文給大家分享vue中根據(jù)用戶權(quán)限動(dòng)態(tài)添加路由的問題,感興趣的朋友一起看看吧
    2021-11-11

最新評(píng)論

溧水县| 台湾省| 张掖市| 临夏市| 汉寿县| 五河县| 高碑店市| 莱阳市| 宜兴市| 沧源| 汉寿县| 龙岩市| 于田县| 资溪县| 武强县| 江西省| 若尔盖县| 化州市| 望都县| 洛宁县| 揭西县| 澜沧| 阿巴嘎旗| 桑植县| 郯城县| 宁阳县| 廉江市| 辛集市| 临西县| 广西| 康马县| 英德市| 四会市| 兰溪市| 双江| 固始县| 日喀则市| 三亚市| 高青县| 黔江区| 洪泽县|