Vue3 + Pinia 状态管理,从入门到模块化

前言

Pinia 是 Vue3 标配状态管理。简单、轻量、易用。

一、创建 Store

javascript 复制代码
// store/modules/user.js
import { defineStore } from 'pinia'

export const useUserStore = defineStore('user', {
  state: () => ({
    token: '',
    userInfo: null
  }),

  actions: {
    setToken(token) {
      this.token = token
    },
    setUserInfo(info) {
      this.userInfo = info
    }
  }
})

二、在组件中使用

xml 复制代码
<script setup>
import { useUserStore } from '@/store/modules/user'
const userStore = useUserStore()

// 获取数据
console.log(userStore.token)

// 修改数据
userStore.setToken('xxxx')
</script>

三、Getters 计算

yaml 复制代码
getters: {
  isLogin: (state) => !!state.token
}

四、数据持久化(常用)

安装插件:

复制代码
npm install pinia-plugin-persistedstate

在 store 中启用:

arduino 复制代码
export const useUserStore = defineStore('user', {
  // ...
  persist: true
})

数据自动存在 localStorage。

五、模块化最佳实践

  • store/modules/xxx.js 按业务拆分
  • 命名:useXxxStore
  • 页面直接引入使用
相关推荐
IT_陈寒2 小时前
React开发者都在偷偷用的5个性能优化黑科技,你知道几个?
前端·人工智能·后端
还是大剑师兰特2 小时前
Vue3 前端专属配置(VSCode settings.json + .prettierrc)
前端·vscode·json
前端小趴菜053 小时前
vue3项目优化方案
前端·javascript·vue.js
Mr_Swilder3 小时前
WebGPU 基础 (WebGPU Fundamentals)
前端
张3蜂3 小时前
HTML5语义化标签:现代网页的骨架与灵魂
前端·html·html5
悟空瞎说3 小时前
我用 PixiJS 撸了个圆桌会议选座系统,从 0 到 1 踩坑全复盘
前端
码云之上3 小时前
从 SPA 到全栈:AI 时代的前端架构升级实践
前端·架构·ai编程
Irene19913 小时前
对比总结:Vue3中的 watch 和 Pinia中的 $subscribe
vue.js·pinia·watch·subscribe
小陈同学呦3 小时前
关于如何使用CI/CD做自动化部署
前端·后端
前端Ah3 小时前
记 华为鸿蒙机型小程序使用uni.createInnerAudioContext() 播放音频播放两次的问题
前端