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
  • 页面直接引入使用
相关推荐
zttbee1 分钟前
前端测试内容
前端
2603_965896626 分钟前
async/await|JS同步写法解决异步终极方案
前端·javascript
A24207349302 小时前
TCP 三次握手与四次挥手:从原理到状态机一次讲清
前端
GreenTea9 小时前
GrokBot 核心成员 Lauren Tan:每月交付 2000 个 PR 的人,是怎么用 AI 的
前端·后端·架构
mCell10 小时前
用 Knip 清理 AI Coding 留下的冗余代码
前端·ai编程·前端工程化
dy171711 小时前
vue2树节点刷新后定位到上一节点展开
vue.js
笃行35011 小时前
使用Rokid AIUI做了一个童年推箱子游戏
前端
excel12 小时前
前端加密的作用与使用场景
前端
计算机魔术师13 小时前
纽约时报版权诉讼披露:微软高管内部称训练 AI 是人类历史上最大规模劳动窃取
前端
去伪存真14 小时前
大模型的参数量为什么那么大?
前端·人工智能