【前端知識】Vue3狀態組件Pinia詳細介紹

Vue3狀態組件Pinia詳細介紹

    • 關聯知識

Pinia 組件介紹、核心原理及使用方式

Pinia 組件介紹
Pinia 是 Vue.js 的官方狀態管理庫,專為 Vue 3 設計,提供簡潔的 API 和強大的 TypeScript 支持。其核心組件包括:
? Store:狀態存儲容器,包含狀態、計算屬性和操作。

? State:響應式數據,類似組件的 data

? Getters:基于狀態的計算屬性,類似 computed

? Actions:同步或異步操作,用于修改狀態。

核心原理
? 基于 Vue 3 的響應式系統(reactiveref),通過 Proxy 實現狀態監聽。

? 無嵌套模塊結構,每個 Store 獨立管理,通過組合式 API 組織代碼。

? 去除了 Vuex 中的 mutations,直接通過 actions 修改狀態。

使用方式

// 定義 Store
import { defineStore } from 'pinia';export const useCounterStore = defineStore('counter', {state: () => ({ count: 0 }),getters: {double: (state) => state.count * 2,},actions: {increment() {this.count++;},},
});// 在組件中使用
import { useCounterStore } from '@/stores/counter';export default {setup() {const counter = useCounterStore();return { counter };},methods: {handleClick() {counter.increment();},},
};

Vuex 組件介紹、核心原理及使用方式

Vuex 組件介紹
Vuex 是 Vue 的官方狀態管理庫,適用于 Vue 2 和 3。其核心組件包括:
? State:單一狀態樹,存儲全局狀態。

? Getters:派生狀態,類似計算屬性。

? Mutations:同步修改狀態的方法。

? Actions:提交 mutations 的異步操作。

? Modules:將 store 分割成模塊。

核心原理
? 基于 Vue 2 的響應式系統(Object.defineProperty),通過深度監聽實現狀態管理。

? 嚴格區分同步操作(mutations)和異步操作(actions),確保狀態變更可追蹤。

? 通過模塊化(modules)組織大型應用的狀態。

使用方式

// 定義 Store
const store = new Vuex.Store({state: { count: 0 },mutations: {INCREMENT(state) {state.count++;},},actions: {increment({ commit }) {commit('INCREMENT');},},getters: {double: (state) => state.count * 2,},
});// 在組件中使用
export default {computed: {...Vuex.mapGetters(['double']),},methods: {...Vuex.mapActions(['increment']),},
};

Pinia 與 Vuex 對比

Pinia 的優點

  1. 簡潔的 API:
    無需 mutations,直接通過 actions 修改狀態,減少樣板代碼。
  2. TypeScript 支持:
    完全類型推斷,無需額外配置。
  3. 模塊化自然:
    每個 Store 獨立,通過文件組織模塊。
  4. 輕量高效:
    體積更小(約 1KB),基于 Vue 3 響應式系統性能更優。
  5. Composition API 集成:
    與 Vue 3 的組合式 API 無縫結合。

Vuex 的優點

  1. 成熟穩定:
    長期作為 Vue 官方庫,社區資源豐富。
  2. 嚴格模式:
    強制通過 mutations 修改狀態,適合需要嚴格跟蹤變更的項目。
  3. 時間旅行調試:
    與 Vue DevTools 深度集成,支持狀態快照和回滾(Pinia 需插件支持)。

Pinia 的缺點
? 對 Vue 2 的支持需額外安裝 @vue/composition-api

? 部分高級功能(如插件系統)不如 Vuex 完善。

Vuex 的缺點
? 繁瑣的模板代碼:

必須區分 mutationsactions,增加代碼量。
? TypeScript 支持有限:

需手動聲明類型,類型推斷較弱。
? 模塊配置復雜:

嵌套模塊導致代碼結構臃腫。

使用場景建議
? 新項目或 Vue 3 項目:優先選擇 Pinia,享受更簡潔的 API 和更好的 TypeScript 支持。

? 現有 Vuex 項目:若無痛點可繼續使用;若需簡化代碼或遷移到 Vue 3,逐步替換為 Pinia。

? 需要嚴格狀態追蹤:Vuex 的嚴格模式可能更適合金融、醫療等嚴謹場景。

代碼對比示例

// Pinia(直接修改狀態)
const store = useStore();
store.count = 10; // 允許直接修改(需開啟嚴格模式則禁止)// Vuex(必須通過 mutation)
store.commit('SET_COUNT', 10); // 必須提交 mutation

總結
Pinia 憑借其簡潔性、輕量化和對 Vue 3 的原生支持,成為現代 Vue 項目的首選狀態管理工具。而 Vuex 在需要嚴格狀態追蹤或維護舊項目時仍有價值。兩者選擇取決于項目需求和技術棧版本。

關聯知識

【前端知識】Vue組件Vuex詳細介紹
Pinia官網地址

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903976.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903976.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903976.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql 云服務遠程linux創建數據庫

1. 本地使用已創建好的用戶創建數據庫出現問題 提示access deniey finalshell遠程創建新用戶 :~# mysql -u root -pR***34 > CREATE DATABASE r***e; > CREATE USER r**ue% IDENTIFIED BY Ry****34; > GRANT ALL PRIVILEGES ON ry_vue.* TO r***e%; > FLUSH PRI…

【“星瑞” O6 評測】 — CPU llama.cpp不同優化速度對比

前言 隨著大模型應用場景的不斷拓展,arm cpu 憑借其獨特優勢在大模型推理領域的重要性日益凸顯。它在性能、功耗、架構適配等多方面發揮關鍵作用,推動大模型在不同場景落地 1. Kleidi AI 簡介 Arm Kleidi 成為解決這些挑戰的理想方案,它能…

wireshark抓包也能被篡改?

wireshark本身并不能修改數據包,但是tcprewrite 可以修改數據包,然后通過tcpreplay 進行重放,這個時候wireshark抓的包,就是被篡改后的pcap包了。 ailx10 網絡安全優秀回答者 互聯網行業 安全攻防員 去咨詢 步驟一&#xff1a…

使用PyTorch進行熱狗圖像分類模型微調

本教程將演示如何使用PyTorch框架對預訓練模型進行微調,實現熱狗與非熱狗圖像的分類任務。我們將從數據準備開始,逐步完成數據加載、可視化等關鍵步驟。 1. 環境配置與庫導入 %matplotlib inline import os import torch from torch import nn from d2l…

內容中臺與企業內容管理核心差異剖析

功能定位與架構設計差異 在企業數字化進程中,內容中臺與企業內容管理(ECM)的核心差異首先體現在功能定位層面。傳統ECM系統以文檔存儲、版本控制及權限管理為核心,主要服務于企業內部知識庫的靜態管理需求,例如通過Ba…

使用PyMongo連接MongoDB的基本操作

MongoDB是由C語言編寫的非關系型數據庫,是一個基于分布式文件存儲的開源數據庫系統,其內容存儲形式類似JSON對象,它的字段值可以包含其他文檔、數組及文檔數組。在這一節中,我們就來回顧Python 3下MongoDB的存儲操作。 常用命令:…

第 12 屆藍橋杯 C++ 青少組中 / 高級組省賽 2021 年真題

一、選擇題 第 1 題 題目:下列符號中哪個在 C 中表示行注釋 ( )。 A. ! B. # C. ] D. // 正確答案:D 答案解析: 在 C 中,//用于單行注釋(行注釋),從//開始到行末的內容會被編譯器忽略。選項 A…

【python】【UV】一篇文章學完新一代 Python 環境與包管理器使用指南

🐍 UV:新一代 Python 環境與包管理器使用指南 一、UV 是什么? UV 是由 Astral 團隊開發的高性能 Python 環境管理器,旨在統一替代 pyenv、pip、venv、pip-tools、pipenv 等工具。 1.1 UV 的主要功能 🚀 極速包安裝&…

前端性能優化2:結合HTTPS與最佳實踐,全面優化你的網站性能

點亮極速體驗:結合HTTPS與最佳實踐,為你詳解網站性能優化的道與術 在如今這個信息爆炸、用戶耐心極其有限的數字時代,網站的性能早已不是一個可選項,而是關乎生存和發展的核心競爭力。一個遲緩的網站,無異于在數字世界…

JavaWeb:vueaxios

一、簡介 什么是vue? 快速入門 <!-- 3.準備視圖元素 --><div id"app"><!-- 6.數據渲染 --><h1>{{ msg }}</h1></div><script type"module">// 1.引入vueimport { createApp, ref } from https://unpkg.com/vu…

Tauri聯合Vue開發中Vuex與Pinia關系及前景分析

在 TauriVue 的開發場景中&#xff0c;Vuex 和 Pinia 是兩種不同的狀態管理工具&#xff0c;它們的關系和前景可以從以下角度分析&#xff1a; 一、Vuex 與 Pinia 的關系 繼承與發展 Pinia 最初是作為 Vuex 5 的提案設計的&#xff0c;其目標是簡化 Vuex 的復雜性并更好地適配 …

Linux中的時間同步

一、時間同步服務擴展總結 1. 時間同步的重要性 多主機協作需求&#xff1a;在分布式系統、集群、微服務架構中&#xff0c;時間一致性是日志排序、事務順序、數據一致性的基礎。 安全協議依賴&#xff1a;TLS/SSL證書、Kerberos認證等依賴時間有效性&#xff0c;時間偏差可能…

【算法基礎】三指針排序算法 - JAVA

一、基礎概念 1.1 什么是三指針排序 三指針排序是一種特殊的分區排序算法&#xff0c;通過使用三個指針同時操作數組&#xff0c;將元素按照特定規則進行分類和排序。這種算法在處理包含有限種類值的數組時表現出色&#xff0c;最經典的應用是荷蘭國旗問題&#xff08;Dutch …

《操作系統真象還原》第十二章(2)——進一步完善內核

文章目錄 前言可變參數的原理實現系統調用write更新syscall.h更新syscall.c更新syscall-init.c 實現printf編寫stdio.h編寫stdio.c 第一次測試main.cmakefile結果截圖 完善printf修改main.c 結語 前言 上部分鏈接&#xff1a;《操作系統真象還原》第十二章&#xff08;1&#…

ICML2021 | DeiT | 訓練數據高效的圖像 Transformer 與基于注意力的蒸餾

Training data-efficient image transformers & distillation through attention 摘要-Abstract引言-Introduction相關工作-Related Work視覺Transformer&#xff1a;概述-Vision transformer: overview通過注意力機制蒸餾-Distillation through attention實驗-Experiments…

深度學習:AI 機器人時代

在科技飛速發展的當下&#xff0c;AI 機器人時代正以洶涌之勢席卷而來&#xff0c;而深度學習作為其核心驅動力&#xff0c;正重塑著我們生活與工作的方方面面。 從智能工廠的自動化生產&#xff0c;到家庭中貼心服務的智能助手&#xff0c;再到復雜環境下執行特殊任務的專業機…

《告別試錯式開發:TDD的精準質量鍛造術》

深度解鎖TDD&#xff1a;應用開發的創新密鑰 在應用開發的復雜版圖中&#xff0c;如何雕琢出高質量、高可靠性的應用&#xff0c;始終是開發者們不懈探索的核心命題。測試驅動開發&#xff08;TDD&#xff09;&#xff0c;作為一種顛覆性的開發理念與方法&#xff0c;正逐漸成…

應用層自定義協議序列與反序列化

目錄 一、網絡版計算器 二、網絡版本計算器實現 2.1源代碼 2.2測試結果 一、網絡版計算器 應用層定義的協議&#xff1a; 應用層進行網絡通信能否使用如下的協議進行通信呢&#xff1f; 在操作系統內核中是以這種協議進行通信的&#xff0c;但是在應用層禁止以這種協議進行…

Excel-CLI:終端中的輕量級Excel查看器

在數據驅動的今天&#xff0c;Excel 文件處理成為了我們日常工作中不可或缺的一部分。然而&#xff0c;頻繁地在圖形界面與命令行界面之間切換&#xff0c;不僅效率低下&#xff0c;而且容易出錯。現在&#xff0c;有了 Excel-CLI&#xff0c;一款運行在終端中的輕量級Excel查看…

百度后端開發一面

mutex, rwmutex 在Go語言中&#xff0c;Mutex&#xff08;互斥鎖&#xff09;和RWMutex&#xff08;讀寫鎖&#xff09;是用于管理并發訪問共享資源的核心工具。以下是它們的常見問題、使用場景及最佳實踐總結&#xff1a; 1. Mutex 與 RWMutex 的區別 Mutex: 互斥鎖&#xf…