状态管理¶
本文聚焦于 Vue 应用的状态管理,涵盖 Vuex 基本用法与实现要点。对于 Vue 3 项目,官方更推荐使用 Pinia;本仓库仍保留 Vuex 相关知识以便理解与维护存量项目。
Vuex 是什么¶
Vuex 是专为 Vue.js 设计的状态管理工具。它采用集中式存储管理应用的所有组件状态,并以可预测的方式变更。
graph TD
A[Component] -->|Dispatch| B(Actions)
B -->|Commit| C(Mutations)
C -->|Mutate| D(State)
D -->|Render| A
A -->|Get| E(Getters)
D -->|Calculate| E
核心模块: 1. State:单一状态树 2. Getters:对 state 的派生计算 3. Mutations:同步更改状态的唯一入口 4. Actions:提交 mutation,可包含异步 5. Modules:模块化 store
Mutation 与 Action 区别¶
-
Mutation:同步修改状态
-
Action:提交 mutation,可执行异步
实现要点(原理速记)¶
- 安装通过全局 mixin 在组件
beforeCreate
注入$store
state
借助 Vue 响应式系统实现联动commit
/dispatch
分别定位并执行mutations
/actions
刷新丢失问题(持久化)¶
Vuex 状态存于内存,刷新会丢失:
- 手动:订阅变更并写入
localStorage
,初始化时replaceState
- 插件:
vuex-persistedstate