Vuex学习记录

什么是VUEX?

vuex中一共有五个状态 State Getter Mutation Action Module

  • State:存储全局状态。

  • Getter:计算派生状态,相当于组件里的 computed。

  • Mutation:同步修改 state。

  • Action:处理异步操作,提交 mutation。

  • Module:模块化管理 state、getter、mutation 和 action。

实例介绍

下列一些例子作为详细介绍:

  • State 这里是字段所需的对应的数据 state提供唯一的公共数据源,所有共享的数据统一放到store的state进行储存, 以 declare.js 为例,state 保存了整个申报书相关的数据:

这些 state 对象在页面中通过 mapState 或 this.$store.state.declare 获取,实现数据共享。 例如,在企业申报书基本信息页面: 组件中不需要再通过 props 传递这些数据,可以直接从 Vuex 拿。

  • Getter

Getter 可以从 state 派生出新的数据。例如:

这样组件就可以通过更加简便的方式来访问数据例如:this.store.getters.sidebar,而不是this.store.state.app.sidebar

  • Mutation

Mutation 用于同步修改 state。这个 mutation 接收两个参数:

state:当前模块的 state

data:需要存入 state 的新数据。

在项目中,mutation 有时会处理一些数据格式化逻辑,例如在下面例子需要处理的逻辑是:

  • 把企业 2022、2023、2024 三年的经营数据按年份排序;

  • 然后提取出前 3 条,分别放到 firstYear、secondYear、thirdYear 里; mutation 必须是同步操作,不能包含异步逻辑。

  • Action

Action 的主要作用是处理异步操作或者封装复杂逻辑 ,再提交 mutation。

在项目中,action 主要用于封装 mutation:

这里就是把在mutation中处理过的数据通过data重新commit给字段所需的数据源。

  • Module

模块化管理会将整个 Vuex 被拆分成多个模块,每个模块有自己的 state、mutation、action 和 getter:

但在本次项目的例子中并未进行模块化管理,而是统一管理的方式。

项目实践总结

  1. 所有数据都存放在 declare 模块里,组件可以直接拿数据。
  2. 页面组件不再需要父子传递 props,组件间共享 state 更加地方便快捷。
  3. mutation 中可以统一处理数据格式比如年份排序、字符串分割等,保持组件简洁。
  4. Action 可以处理 API 请求,组件只需触发 dispatch,不关心具体数据处理逻辑。
相关推荐
Chrischaan23 分钟前
做 AI 塔罗小程序时,我为什么不让大模型自己抽牌:一次上线复盘
前端
骑着蜗牛撵大象3271 小时前
LangChain 工具调用从声明到闭环:给智能体接上真实的手脚
前端
数据掘金1 小时前
百度统计后台页面数据异常?从手动调用时机开始排查
前端
hunteritself1 小时前
10 层 4K 实时剪辑,国产工作站进入广电制作核心
大数据·前端·人工智能·深度学习·transformer
踩着两条虫1 小时前
我在浏览器里“盖”了一个村:Vue + Three.js 大屏开发踩坑记
前端·vue.js·three.js
mbshqqb1 小时前
TypeScript基础教程之同步生成器
前端·javascript·typescript
嘟嘟同学和妮妮同学1 小时前
【升级】一个中国历史可视化站:皇帝时间线梳理、古代思想流派、诗词鉴赏 (2)
前端·html
暗夜行者之光2 小时前
LangGraph + MCP 实战:构建"自然语言查数据"的 ChatBI Agent
前端·后端
一tiao咸鱼2 小时前
还在手动海投?我做了个 AI 求职助手,自动筛选 BOSS 职位再精准投递
前端·后端·面试
尤水就下2 小时前
🔥预热:在线文档的 block 架构是如何实现的(未完待续...)
前端·javascript·架构