Vue3 Vuex 入门实战:手写迷你 Vuex 解析状态管理原理
在 Vue3 项目开发中,组件化让代码复用和维护更高效,但跨组件、跨页面的数据共享却成了高频痛点——用户登录信息、全局权限、公共计数器等数据,如果靠组件传参层层传递,代码会变得混乱不堪。这时候,Vuex 就成了前端状态管理的'大管家',帮我们集中式管理共享数据。本文将从前端数据管理的痛点出发,带你吃透 Vuex 的核心用法,甚至手写一个迷你 Vuex 理解其底层原理。
一、前端数据管理:为什么需要 Vuex?
现代 Web 应用由组件、数据、路由三大核心构成,组件内部的私有数据用 ref/reactive 管理即可,但共享数据的管理却需要更规范的方式。
我们先试想一个简单场景:用全局变量存储共享数据。
window._store = {} // 全局存储数据
这种方式看似简单,但存在致命问题:window._store不是响应式的,修改数据后 Vue 组件无法自动更新视图。如果我们用 Vue 的响应式 API 包裹全局数据,并提供统一的修改方法,这就是 Vuex 的雏形——本质是'响应式的全局数据 + 规范化的修改规则'。
二、Vuex 是什么?
Vuex 是 Vue 官方的状态管理库,核心作用是集中式存储和管理应用中所有组件的共享状态。
可以做一个形象的类比:
- 小型项目(初创公司):组件私有数据(个人办公用品)随便用,无需规范;
- 中大型项目(成熟公司):共享数据(公共办公用品)需要'管家'统一管理,申请、修改都有规范——Vuex 就是这个'管家'。
核心原则:组件私有数据用 ref/reactive 管理,跨组件/跨页面共享数据用 Vuex 管理。
三、Vuex 快速上手:从安装到组件使用
1. 安装 Vuex
Vue3 需安装 Vuex 4.x 版本(@next标识):
npm install vuex@next
2. 创建 Store 实例
在 src/store/index.js 中创建核心的 Store,包含 state(存储数据)和 mutations(同步修改数据的方法):
import { createStore } from 'vuex'
const store = createStore({
// 定义共享数据
state() {
return { count: 666 }
},
// 定义修改数据的方法(唯一能修改 state 的地方)
mutations: {
add(state) {
state.count++
}
}
})
store

