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 对象在页面中通过 mapStatethis.$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 条,分别放到 firstYearsecondYearthirdYear 里; 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,不关心具体数据处理逻辑。
相关推荐
青衫码上行41 分钟前
【Java Web学习 | 第15篇】jQuery(万字长文警告)
java·开发语言·前端·学习·jquery
x***13393 小时前
【MyBatisPlus】MyBatisPlus介绍与使用
android·前端·后端
z***75155 小时前
【Springboot3+vue3】从零到一搭建Springboot3+vue3前后端分离项目之后端环境搭建
android·前端·后端
fruge6 小时前
仿写优秀组件:还原 Element Plus 的 Dialog 弹窗核心逻辑
前端
an86950016 小时前
vue新建项目
前端·javascript·vue.js
w***95497 小时前
SQL美化器:sql-beautify安装与配置完全指南
android·前端·后端
顾安r7 小时前
11.22 脚本打包APP 排错指南
linux·服务器·开发语言·前端·flask
万邦科技Lafite8 小时前
1688图片搜索商品API接口(item_search_img)使用指南
java·前端·数据库·开放api·电商开放平台
yinuo9 小时前
网页也懂黑夜与白天:系统主题自动切换
前端
Coding_Doggy9 小时前
链盾shieldchain | 项目管理、DID操作、DID密钥更新消息定时提醒
java·服务器·前端