Vue 全局状态管理新宠:Pinia实战指南

文章目录


前言

    随着Vue.js项目的日益复杂,高效的状态管理变得至关重要。Pinia作为Vue.js官方推荐的新一代状态管理库,以其简洁的API和强大的功能脱颖而出。本文将带您快速上手Pinia,从安装到应用,轻松实现Vue.js项目的全局状态管理,提升开发效率和项目可维护性。


全局状态管理

基本步骤:

clike 复制代码
1.npm install pinia
2.main.js 引入注册
3.src下创建对应状态管理目录store(名不能改变)
4.store中定义user.js
5.在vue中使用

pinia

  • Pinia 是 Vue.js 的一个状态管理库,它提供了一种更简单、更直观的方式来管理 Vue 应用的状态。
  • Pinia是 Vue 的存储库,它允许您跨组件/页面共享状态,与vuex功能一样。

1、安装:
npm install pinia
2、main.js 引入注册:

js 复制代码
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import Axios from 'axios'
// 第一步:引入pinia
import {createPinia} from 'pinia'

var app = createApp(App)
app.config.globalProperties.$axios = Axios

// 第二步:创建pinia
const pinia = createPinia()
// 第三步:向vue中注册安装pinia
app.use(pinia)

app.use(router).mount('#app')

3、src下创建对应状态管理目录store(名不能改变),并定义user.js:

  • 在store中创建对应状态管理对象,定义user.js
  • Store 是使用 defineStore() 定义的,并且它需要一个唯一名称,作为第一个参数传递
  • 这个 name ,也称为 id ,是必要的,Pinia 使用它来将 store 连接到 devtools。 将返回的函数命名为 use... 是跨可组合项的约定
  • // defineStore('user',{}) user就是这个仓库的名称name
    4、pinia在vue中使用:

1) 引入,在需要的vue文件中,引用仓库并获取对象:

  • import {userStore} from '../store/user'
  • let userstore = userStore();

2) 取值方式:

  • userstore.userid

3) 直接修改数据:

  • userstore.userid = x

4) $patch方法修改,修改相应的属性值,修改多个值,状态会统一执行一次:

js 复制代码
//使用$patch方法  以对象的形式一次性修改
const editAll = () => {
  userInfoStore.$patch({
	  username: "鸭蛋",
	  age: 21,
 });

相关推荐
LiaCode1 小时前
别让 AI 把仓库写成“代码平行宇宙”:从 Deslop 看生成前查重
前端·后端·github
nice先生的狂想曲1 小时前
javascript高级程序设计(六)——2026.9.5
前端·javascript
光影少年1 小时前
如何做大型React+RN 项目架构设计、目录规范
前端·react native·react.js
一位正在转型AI全栈的前端工程师1 小时前
AI 全栈学习之旅 -Week 8:从单 Agent 到多 Agent 协作:LangGraph 实战与记忆持久化
前端·python
用户921080262861 小时前
Promise 和 async/await:从用途到执行机制
前端
yyt3630458412 小时前
KLineChartQuant:GLSL 的精度问题及 RTC 解法
前端·vue.js·react.js·交互·图形渲染·webgl·数据可视化
HarmonLTS2 小时前
智盾 WAF v8.2 Ultra|下一代 Web 应用防火墙
前端
এ慕ོ冬℘゜2 小时前
前端实战:基于jQuery递归实现通用树形组织菜单(可直接复用)
前端·javascript·jquery
计算机魔术师2 小时前
英伟达据报洽谈向 Mira Murati 的 Thinking Machines Lab 投资 25 亿美元
前端
变与不变8062 小时前
js函数与封装详细解答
前端·javascript·vue.js