【前端学习记录】Vuex状态管理学习笔记

Vue.js教学第十三章:深入解析Vuex,前端状态管理核心指南 Vuex是Vue.js官方提供的状态管理库,旨在解决复杂应用中多组件共享状态的问题。它通过集中式存储管理应用的所有组件的状态,确保状态变化可预测且易于调试。Vuex的核心概念包括state(存储状态)、getter(派生状态)、mutation(同步修改状态)和action(处理异步操作)。通过定义明确的规则,Vuex使得状态管理更加有序和可维护。本文详细介绍了Vuex的安装、配置及核心概念的使用方法,并通过一个计数器示例展示了如何在实际项目中应用Vuex进行状态管理。Vuex的模块化特性还支持将复杂应用的 阅读详情

为什么使用Vuex?

在Vue中,当遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:

  • 多个视图依赖于同一状态。
  • 来自不同视图的行为需要变更同一状态。

对于问题一,传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。
对于问题二,我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。以上的这些模式非常脆弱,通常会导致无法维护的代码。

Vuex通过把组件的共享状态抽取出来,以一个全局单例模式管理。在这种模式下,我们的组件树构成了一个巨大的“视图”,不管在树的哪个位置,任何组件都能获取状态或者触发行为。通过定义和隔离状态管理中的各种概念并通过强制规则维持视图和状态间的独立性,我们的代码将会变得更结构化且易维护。

项目结构

Vuex 并不限制你的代码结构。但是,它规定了一些需要遵守的规则:

1、应用层级的状态应该集中到单个 store 对象中。

2、提交 mutation 是更改状态的唯一方法,并且这个过程是同步的。

3、异步逻辑都应该封装到 action 里面。

只要你遵守以上规则,如何组织代码随你便。如果你的 store 文件太大,只需将 action、mutation 和 getter 分割到单独的文件。

对于大型应用,我们会希望把 Vuex 相关代码分割到模块中。下面是项目结构示例:

├── index.html
├── main.js
├── api
│   └── ... # 抽取出API请求
├── components
│   ├── App.vue
│   └── ...
└── store
    ├── index.js          # 我们组装模块并导出 store 的地方
    ├── actions.js        # 根级别的 action
    ├── mutations.js      # 根级别的 mutation
    └── modules
        ├── cart.js       # 购物车模块
        └── products.js   # 产品模块

使用方法

let store = new Vuex.Store({
  strict: false, //启用严格模式,生产环境请置为false
  modules: {
    index: {
       namespaced: true,
		state: {
	        // 存放共享状态值
			userInfo: localStorage.getItem("user") || {}, //用户信息
		},
	    mutations: { //更新状态值
	          //userInfo
			[INIT_USERINFO](state) {
			  state.userInfo = JSON.parse(localStorage.getItem("user")) || {};
			},
	    },
		actions: {
	         // 处理异步更新状态值
			async initApp({ commit, dispatch }) {
	  			commit(INIT_USERINFO);
	  			await dispatch('initHome');
	        },
		}
	}
  }
});

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。要唤醒一个 mutation handler,你需要以相应的 type 调用 store.commit 方法。但是mutation 必须是同步函数。

Action 类似于 mutation,不同在于:

  • Action 提交的是 mutation,而不是直接变更状态
  • Action 可以包含任意异步操作。
  • Action 通过 store.dispatch 方法触发。
掌握Vuex:Vue.js状态管理的基石 在现代前端应用开发中,状态管理是一个不可或缺的部分。状态管理不仅保证了数据在组件间高效且一致地流转,还能维持应用状态的一致性和可预测性。Vuex是为Vue.js应用程序设计的专有状态管理库,它提供了一种集中式存储来管理所有组件的状态,并以相应的规则确保状态以可预测的方式发生变化。Vuex的状态管理概念起源于Flux架构,它通过单一状态树来存储状态,使得状态的管理更加清晰和一致。通过集成Vuex到Vue项目中,我们可以轻松实现复杂应用的跨组件状态共享,并且能够在大型项目中维护良好的可维护性和可扩展性。 阅读详情

相关推荐

企业级智能问数开发的核心痛点与技术聚焦

本文介绍了企业级智能问数系统开发的三大核心问题和解决方案:语义解析不精准、SQL生成不健壮、企业适配难落地。文章从开发者视角出发,详细拆解了NLU语义解析、SQL生成、对话记忆、企业级适配四大核心模块的技术实现。 在技术选型方面,推荐了LangChain+DeepSeek-R1、FAISS/Milvus、SQLAlchemy等工具链组合。针对企业级需求,重点讲解了: 语义解析模块的意图识别优化和要素提取技术 SQL生成模块的语法校验与性能优化方案 对话记忆模块的Redis存储实现 企业级适配的三层防护体系和

lamehsl的专栏 1047

【星火】海思HI3516C开发板实战:基于LVGL与MPP库的行车记录仪/电子显微镜方案

本文详细介绍了基于海思HI3516CV500开发板,结合LVGL图形库与海思MPP媒体处理平台,实现行车记录仪与电子显微镜方案的完整实战过程。内容涵盖从系统环境搭建、驱动配置到应用开发的全流程,重点解析了MPP视频流处理管道与LVGUI界面协同工作的核心机制,为嵌入式音视频开发提供了可复用的参考方案。

weixin_42126677的博客 161

Vuex状态管理

​ 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的。某些属性我们可能需要经过变化后来使用,这个时候可以使用getters:Vuex 允许我们在 store 中定义“getters”(可以认为是 store 的计算属性)它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。”要唤醒一个 mutation 处理函数,你需要以相应的 type 调用。

weixin_63111096的博客 1719

Verilog语法之十:过程块(initial和always)

我将Verilog的语法进行了总结,写了13篇文章,让小白“快速见识猪如何跑”,每一篇讲解一类语法,结合正确的示例代码和错误的示例代码,有的章节对个别语法进行了归纳总结,帮助初学者加深理解。

航天领域资深码农,型号经验丰富,一线干货分享 1672

OpenCV 常用的API总结(迅速查询)

OpenCV基本操作 openCV安装 读取图片(IO操作) 绘制集合图形 图像加法以及混合操作 OpenCV图像处理 图像几何变换 形态学操作 图像平滑 直方图 边缘检测 模板匹配 傅里叶变换 轮廓检测 图像分割 图像特征提取 SIFT检测关键点 视频读写............

Peyzhang的博客 3936

【Vue】前端状态管理之Vuex全解析

Vuex状态管理全解析:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

余浩的博客 1270

temu登录接口逆向分析(含Py纯算)

【代码】temu登录接口逆向分析(含Py纯算)

数据精灵喵 1948

Vue3之状态管理Vuex

Vuex作为Vue.js的官方状态管理库,为大型或复杂前端项目提供了高效的解决方案。它通过集中式存储管理应用状态,确保状态变化可预测。Vuex的核心包括state、getters、mutations、actions和modules,分别负责状态存储、状态派生、状态修改、异步操作和模块化管理。其特点在于集中式状态管理、组件间状态共享、状态可追踪维护以及简化组件通信。

一个老Java开发的自白 2190

二维码扫描与页面跳转的完整流程解析

本文详细解析了二维码扫描与页面跳转的完整流程,从核心原理到前后端实现,涵盖了二维码生成、扫码事件处理、后端验证机制及跳转逻辑等关键环节。特别介绍了如何使用qrcode.js生成二维码、WebSocket处理扫码状态以及JWT令牌验证设计,帮助开发者构建安全高效的扫码跳转系统。

cicd6pipeline的博客 1089

SCSA,scCATCH,SciBet,SingleR 四种注释方法比较

以下是和四种细胞类型注释方法的详细对比,从。

qq_40256654的博客 1215

前端(vue)学习笔记(CLASS 7):vuex

vuex是一个vue的状态管理工具,状态就是数据大白话:vuex是一个插件,可以帮我们管理vue通用的数据(多组件共享的数据)

2301_81351468的博客 1428

【BlueDroid】【BLE】低功耗蓝牙客户端和服务端开发流程解析(超详细)

1. 精讲):SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论2. 欢迎大家关注和订阅,和专栏会持续更新中.....敬请期待!

风云说通信 1925

什么是前端状态管理?

近两年前端技术的发展如火如荼,大量的前端项目都在使用或转向 Vue 和 React 的阵营,由前端渲染页面的单页应用占比也越来越高,这就代表 前端工作的复杂度也在直线上升,前端页面上展示的信息越来越多也越来 越复杂。我们知道,任何状态都需要进行管理,那么今天我们来聊聊前端 状态管理。 为什么需要状态管理? 举个例子: 图书馆的管理,原来是开放式的,所有人可以随意进出书库借书还书,如 果人数不...

weixin_40851188的博客 4146

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Vue3——Vuex状态管理

关于状态管理的两个库——vuex/piniapinia是更适配vue3的,并且更好用,但是现在很多公司大量的项目用的是vuex,所以还是要了解。后面pinia一定会占据主流。pinia相当于vuex5的版本,官方推荐也在推荐pinia。学完vuex再学pinia之后会更快,因为概念是一样的。

Tommy__li的博客 1411

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Web前端最全《Vue入门到精通系列之六》--- Vuex详解_vue中vuex和store(1),字节跳动 算法工程师 面试

好了,这就是整理的前端从入门到放弃的学习笔记,还有很多没有整理到,我也算是边学边去整理,后续还会慢慢完善,这些相信够你学一阵子了。做程序员,做前端工程师,真的是一个学习就会有回报的职业,不看出身高低,不看学历强弱,只要你的技术达到应有的水准,就能够得到对应的回报。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】学习从来没有一蹴而就,都是持之以恒的,正所谓活到老学到老,真正懂得学习的人,才不会被这个时代的洪流所淘汰。我们强调, 不要再Mutation中进行异步操作.

2401_84433924的博客 1123

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

vuex状态管理(运行机制及实例)

背景: vue2.x项目组件工程化数据的层层传递太麻烦。如下图:内层的在家呢需要父组件的数据需要一层一层地传递,组件加载数据到父组件的时候需要一层一层回递,这样加重页面的负担。所以推出vuex状态管理来统一分发和部署。把组件中的状态抽取出来,放入Vuex进行统一管理。 这样他们就变成一级关系: vuex其实是一种套路(学会运行机制就ok) 官网: 网址:https://vuex.vuejs.org/zh/installation.html ...

Front小思的博客 1989

vuex状态管理知识点记录

src/vuex/store.js // src/vuex/store.js import Vue from 'vue' import Vuex from 'vuex' // import createLogger from 'vuex/logger' const state = { count: 0, firstName: 'liu', lastName: 'saijin', ...

weixin_33969116的博客 135

后端学习Vue系列之——Vuex

前言 作为一个内心骚动想做点小系统的后端来说,学习Vue是过不去的一个坎,毕竟香嘛~ 遂写一篇博文用于记录在Vue中用的比较多的,且不容易记的知识点,方便自己在需要使用时能够查找到相关知识点以及如何快速使用。 在基础篇中,已经介绍了关于Vuex中的一些基础知识点,下面就会陆续介绍Vuex中进阶的一些知识点,总结出来方便自己随时查阅。 正文 在官网上,对于Vuex的介绍为,Vuex是一个专为Vue.js应用程序开发的状态管理模式,说白了就是为了实现组件之间数据的共享。对于Vue来说,组件之间共享数据的方式:

你要悄悄的拔尖,然后惊艳所有人 3157

vuex学习笔记

一、Vuex的介绍

qq_40353662的博客 208

记录:vue使用cookie、vuex和localstorage、sessionStorage进行状态管理

一.cookie、session、localStorage、sessionStorge总体介绍 cookie:浏览器储存,最大4KB,请求头会自动带上(最先验证的时候可以使用),vue中默认有效时间为浏览器关闭,django中可以自己设置。(位于google的setting里面,你可以去找找/控制台的Application里面都有) session:保存在服务器,配合着用挺好。(一般是放在数据...

by_side_with_sun的博客 5365

【前端高频面试题--Vuex下篇】

最新前端Vuex高频面试题,来看看吧

qq_45832651的博客 1340

状态管理:Vuex、Redux、Pinia与浏览器存储的对比与关系

本文探讨了前端状态管理工具(Vuex、Redux、Pinia)与浏览器存储(LocalStorage、SessionStorage、Cookies)的区别与联系。状态管理库主要用于内存中的临时状态管理,不具备持久性;而浏览器存储可实现数据持久化,但功能单一。文章从存储位置、容量、持久性等维度对比了两者的差异,并提出了结合使用的方案:用状态管理库处理应用内部状态,通过浏览器存储实现数据持久化和同步。最后给出了根据数据类型选择存储方式、实现状态持久化等最佳实践建议,帮助开发者构建更高效的前端应用。

你若盛开,清风自来 1412

vuex公共状态管理

vuex的使用 vuex 用来管理公共的状态,也就是说当组件之间通信过于复杂,我们就可以用vuex来管理公共的状态,这么所以组件就都可以很容易的访问到了。 ...

qq_45572424的博客 413

vuex学习记录

vuex学习 安装并引入 安装npm install vuex --save 引入并使用 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state:{}, getters:{}, mutations:{}, actions:{}, modules:{} }) 核心 1. state 相当于vue组件实例中的dat

焦虑的博客 133

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 145
上一篇: 【前端学习记录】下载功能实现小记
Note_creek
博客等级 码龄10年 372粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值