《Vue3 Pinia 实战:封装全局状态管理(附源码)》(781)
# 🔥 Vue3 Pinia 实战:封装全局状态管理(附源码)
在 Vue3 生态中,**Pinia** 已成为新一代状态管理工具的首选 🚀。相比 Vuex,Pinia 更轻量、更直观,完美支持 Composition API。今天,我们就来实战封装一个全局状态管理方案,并附上完整源码!
## 🛠️ 为什么选择 Pinia?
- **TypeScript 友好**:自动推导类型,减少类型定义烦恼 📦
- **模块化设计**:无需嵌套模块,每个 Store 独立管理 🧩
- **Devtools 支持**:轻松调试状态变化 🔍
## 🎯 实战:封装全局 Store
### 1️⃣ 安装 Pinia
```bash
npm install pinia
```
### 2️⃣ 创建全局 Store
在 `src/stores` 目录下定义 Store,例如用户信息管理:
```ts
// stores/user.ts
import { defineStore } from 'pinia'
export const useUserStore = defineStore('user', {
state: () => ({
name: 'Guest',
token: ''
}),
actions: {
login(name: string, token: string) {
this.name = name
this.token = token
}
}
})
```
### 3️⃣ 全局注册
在 `main.ts` 中挂载 Pinia:
```ts
import { createPinia } from 'pinia'
const app = createApp(App)
app.use(createPinia())
```
### 4️⃣ 组件中使用
```vue
<script setup>
import { useUserStore } from '@/stores/user'
const user = useUserStore()
</script>
<template>
<div>欢迎,{{ user.name }}!</div>
</template>
```
## 💡 高级封装技巧
- **持久化存储**:搭配 `pinia-plugin-persistedstate` 实现状态持久化 💾
- **自动导入**:使用 `unplugin-auto-import` 免手动导入 Store ✨
## 📦 源码获取
完整项目已上传 GitHub:[项目链接](#)(替换为你的仓库地址)
Pinia 让状态管理变得简单高效,快来试试吧!🎉
> 提示:本文代码基于 Vue3 + TypeScript,确保你的环境已正确配置。
5G.okatady081.asia/PoSt/1125_843082.HtM
5G.okatady080.asia/PoSt/1125_185940.HtM
5G.okatady079.asia/PoSt/1125_844880.HtM
5G.okatady078.asia/PoSt/1125_548889.HtM
5G.okatady077.asia/PoSt/1125_004758.HtM
5G.okatady076.asia/PoSt/1125_608403.HtM
5G.okatady075.asia/PoSt/1125_639794.HtM
5G.okatady074.asia/PoSt/1125_551369.HtM
5G.okatady073.asia/PoSt/1125_585088.HtM
5G.okatady072.asia/PoSt/1125_966677.HtM
5G.okatady081.asia/PoSt/1125_470025.HtM
5G.okatady080.asia/PoSt/1125_066866.HtM
5G.okatady079.asia/PoSt/1125_662521.HtM
5G.okatady078.asia/PoSt/1125_073895.HtM
5G.okatady077.asia/PoSt/1125_685824.HtM
5G.okatady076.asia/PoSt/1125_288560.HtM
5G.okatady075.asia/PoSt/1125_297647.HtM
5G.okatady074.asia/PoSt/1125_730154.HtM
5G.okatady073.asia/PoSt/1125_004596.HtM
5G.okatady072.asia/PoSt/1125_673823.HtM
5G.okatady081.asia/PoSt/1125_874473.HtM
5G.okatady080.asia/PoSt/1125_778177.HtM
5G.okatady079.asia/PoSt/1125_703776.HtM
5G.okatady078.asia/PoSt/1125_493685.HtM
5G.okatady077.asia/PoSt/1125_255491.HtM
5G.okatady076.asia/PoSt/1125_701725.HtM
5G.okatady075.asia/PoSt/1125_652891.HtM
5G.okatady074.asia/PoSt/1125_545135.HtM
5G.okatady073.asia/PoSt/1125_790526.HtM
5G.okatady072.asia/PoSt/1125_771125.HtM
5G.okatady081.asia/PoSt/1125_460155.HtM
5G.okatady080.asia/PoSt/1125_375741.HtM
5G.okatady079.asia/PoSt/1125_662147.HtM
5G.okatady078.asia/PoSt/1125_825541.HtM
5G.okatady077.asia/PoSt/1125_173969.HtM
5G.okatady076.asia/PoSt/1125_298039.HtM
5G.okatady075.asia/PoSt/1125_730650.HtM
5G.okatady074.asia/PoSt/1125_325107.HtM
5G.okatady073.asia/PoSt/1125_744207.HtM
5G.okatady072.asia/PoSt/1125_144400.HtM
5G.okatady081.asia/PoSt/1125_796714.HtM
5G.okatady080.asia/PoSt/1125_426081.HtM
5G.okatady079.asia/PoSt/1125_466481.HtM
5G.okatady078.asia/PoSt/1125_626995.HtM
5G.okatady077.asia/PoSt/1125_363072.HtM
5G.okatady076.asia/PoSt/1125_659484.HtM
5G.okatady075.asia/PoSt/1125_385449.HtM
5G.okatady074.asia/PoSt/1125_145669.HtM
5G.okatady073.asia/PoSt/1125_999595.HtM
5G.okatady072.asia/PoSt/1125_379223.HtM
5G.okatady081.asia/PoSt/1125_877144.HtM
5G.okatady080.asia/PoSt/1125_692903.HtM
5G.okatady079.asia/PoSt/1125_607395.HtM
5G.okatady078.asia/PoSt/1125_285809.HtM
5G.okatady077.asia/PoSt/1125_336931.HtM
5G.okatady076.asia/PoSt/1125_326585.HtM
5G.okatady075.asia/PoSt/1125_396285.HtM
5G.okatady074.asia/PoSt/1125_285924.HtM
5G.okatady073.asia/PoSt/1125_988814.HtM
5G.okatady072.asia/PoSt/1125_708195.HtM
5G.okatady081.asia/PoSt/1125_775989.HtM
5G.okatady080.asia/PoSt/1125_810425.HtM
5G.okatady079.asia/PoSt/1125_777030.HtM
5G.okatady078.asia/PoSt/1125_896617.HtM
5G.okatady077.asia/PoSt/1125_030006.HtM
5G.okatady076.asia/PoSt/1125_422465.HtM
5G.okatady075.asia/PoSt/1125_003151.HtM
5G.okatady074.asia/PoSt/1125_970009.HtM
5G.okatady073.asia/PoSt/1125_117539.HtM
5G.okatady072.asia/PoSt/1125_399307.HtM
5G.okatady081.asia/PoSt/1125_170687.HtM
5G.okatady080.asia/PoSt/1125_704414.HtM
5G.okatady079.asia/PoSt/1125_626782.HtM
5G.okatady078.asia/PoSt/1125_914897.HtM
5G.okatady077.asia/PoSt/1125_525654.HtM
5G.okatady076.asia/PoSt/1125_656165.HtM
5G.okatady075.asia/PoSt/1125_851054.HtM
5G.okatady074.asia/PoSt/1125_006657.HtM
5G.okatady073.asia/PoSt/1125_633805.HtM
5G.okatady072.asia/PoSt/1125_525292.HtM
