一、 为什么你的Vue项目需要Vuex?从相亲修罗场说起
刚学Vue时总觉得每个组件自力更生特别酷,直到遇到这种场景:
相亲APP的「用户主页」要展示身高,「匹配推荐」要计算缘分值,「聊天窗口」要显示头像——这三个组件居然都要用用户的年龄数据!于是你分别在三个组件里调用接口,结果用户刚过生日,三个地方显示三个不同年龄...场面堪比相亲对象同时约见三位异性般尴尬。
Vuex的核心价值:
- 中央情报局:所有组件共享的数据统一存放在Vuex的State里,改年龄只需改一次
- 流程标准化:通过严格规定的Mutations修改数据,避免直接乱改(就像相亲不能跳过聊天直接领证)
- 异步处理:把Ajax请求放在Actions里,组件只需触发动作就能等结果
简单说,Vuex就是给组件们立的规矩:谁想用数据都得按流程来!
二、 Vuex三板斧:State、Mutations、Actions的关系揭秘
1. State —— 集体宿舍的公告栏
想象成合租房的公共冰箱:
- 所有室友(组件)都能看到冰箱里的啤酒(数据)
- 但你不能直接把啤酒换成可乐(禁止直接修改State)
state: {
userProfile: {
name: "单身狗小明",
age: 28,
crush: null // 暗恋对象
}
}
2. Mutations —— 唯一有冰箱钥匙的人
只有Mutations能直接修改State,像这样:
mutations: {
UPDATE_CRUSH(state, newCrush) {
state.userProfile.crush = newCrush // 修改暗恋对象
}
}
重点:Mutations必须是同步操作!就像你不能边改冰箱内容边等外卖(异步),会乱套!
3. Actions —— 帮你跑腿的外卖小哥
处理异步操作的最佳人选:
actions: {
async sendLoveLetter({ commit }, crushId) {
const response = await api.sendLove(crushId) // 先发情书
commit('UPDATE_CRUSH', response.data) // 收到回复再更新状态
}
}
三者关系经典流程图:
组件 → (dispatch) Actions → (commit) Mutations → (mutat

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



