当前位置: 首页 > news >正文

南宫NG·28(中国)相信品牌力量/Vue 3 中的状态管理 —— 从 Vuex 到 Pinia 的全面过渡

南宫NG·28(中国)相信品牌力量【罔丨止:MGTY.PW】 点击此处复制到浏览器打开

在 Vue 项目中,组件间数据共享是常见需求。Vuex 是过去的主力方案,而在 Vue 3 生态下,Pinia 正式成为推荐状态管理库。本课将带你了解两者的区别,并用 Pinia 构建实际应用的共享状态。


一、Pinia 是什么?

Pinia 是 Vue 官方推出的轻量状态管理库,支持组合式 API、类型推导、热更新等特性,被视为 Vuex 的替代品。

优点包括:

  • 与 Vue 3 无缝集成

  • 写法更简洁,使用体验更现代

  • 支持模块化和持久化扩展

  • 默认支持 devtools 调试


二、安装与配置

 

bash

复制编辑

npm install pinia

main.js 中注册:

https://blog.csdn.net/yibuAPI12/article/details/148902253?0625https://blog.csdn.net/yibuAPI12/article/details/148903853?0625https://blog.csdn.net/yibuAPI12/article/details/148904006?0625https://blog.csdn.net/yibuAPI12/article/details/148904471?0625https://blog.csdn.net/yibuAPI12/article/details/148904836?0625https://blog.csdn.net/yibuAPI12/article/details/148904873?0625https://blog.csdn.net/yibuAPI12/article/details/148904901?0625https://blog.csdn.net/yibuAPI12/article/details/148905070?0625https://blog.csdn.net/yibuAPI12/article/details/148905225?0625https://blog.csdn.net/yibuAPI12/article/details/148905296?0625https://blog.csdn.net/2501_91176835/article/details/148905751https://blog.csdn.net/2501_91176835/article/details/148906078

js

复制编辑

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


三、创建一个 Store

src/stores/counter.js 中创建:

 

js

复制编辑

import { defineStore } from 'pinia' export const useCounterStore = defineStore('counter', { state: () => ({ count: 0 }), actions: { increment() { this.count++ } } })


四、在组件中使用 Store

 

vue

复制编辑

<template> <div> <p>当前计数:{{ counter.count }}</p> <button @click="counter.increment">增加</button> </div> </template> <script setup> import { useCounterStore } from '@/stores/counter' const counter = useCounterStore() </script>

无需手动注入,Pinia 自动响应式,非常适合组合式 API 用户。


五、Getter 与派生状态

 

js

复制编辑

getters: { double: (state) => state.count * 2 }

在组件中直接读取 counter.double 即可。


六、模块化管理多个 Store

你可以按业务拆分多个 Store:

 

js

复制编辑

// userStore.js export const useUserStore = defineStore('user', { state: () => ({ username: '', token: '' }), actions: { login() { /* 登录逻辑 */ } } })

这种方式避免了 Vuex 中繁琐的命名空间写法。


七、Pinia vs Vuex 简单对比

对比项PiniaVuex
API 风格组合式选项式
TS 支持极佳(自动推导)较复杂
模块化简单直接需要命名空间配置
学习成本较低略高
是否推荐✅ 官方推荐❌ 不再是主力推荐
http://www.lqws.cn/news/515395.html

相关文章:

  • NCCN Guidelines Navigator:数智化工具引领肿瘤精准治疗新纪元
  • 运维打铁: 系统内核参数调优实战
  • ‌RESTful API 设计规范
  • 无锁队列简易入门
  • Sivers毫米波产品系列全景图:覆盖通信、工业、交通、航天
  • Xcode缓存清除
  • 鸿蒙Next仓颉开发语言中的数据类型总结分享
  • java 导出word 实现循环表格
  • 配置有nvlink的H20使用pytorch报错
  • 在树莓派上用 .NET8.0 挂载TCP服务端
  • React ref 和 JS 对象的区别
  • Linux系统之Tomcat服务
  • django csrf的局限性
  • 亚远景-ASPICE与ISO 26262:汽车安全与软件质量的协同
  • 云原生灰度方案对比:服务网格灰度(Istio ) 与 K8s Ingress 灰度(Nginx Ingress )
  • 【Pandas】pandas DataFrame asfreq
  • stm32week17+18+19+20
  • IP-GUARD外设以及网络禁用策略制定
  • ubuntu22.04可以执行sudo命令,但不在sudo组
  • 学习日记-spring-day37-6.25
  • NETCONF 典型工作流程
  • Spark 之 UT
  • 新能源汽车电池类型差异分析
  • 网络安全漏洞扫描是什么?如何识别目标进行扫描?
  • LangGraph--基础学习(Subgraphs 子图)
  • easy-caffeine一个简洁灵活易用基于caffeine的本地缓存框架
  • dovi交叉编译方法(编译libdovi.so)
  • PyTorch 入门之官方文档学习笔记(二)训练分类器
  • 利用Pytorch玩一玩文生图的HDGAN
  • 长尾关键词SEO优化高效策略