【前端知识】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.mzph.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…