当前位置: 首页 > news >正文

Vuex:Vue.js 的状态管理库

一、Vuex 简介

Vuex 是 Vue.js 的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 的出现解决了组件间共享状态的问题,使得状态管理变得简单、可预测和可维护。

二、Vuex 核心概念

1. State

State 是 Vuex 管理的应用状态对象。Vuex 使用单一状态树,用一个对象就包含了全部的应用层级状态。每个应用将仅仅包含一个 store 实例。

// store.js 
const store = new Vuex.Store({ state: { count: 0 } 
});

2. Getters

Getters 是基于 state 的计算属性,用于从 state 中派生出一些状态。

// store.js 
const store = new Vuex.Store({ // ... getters: { doubleCount: state => state.count * 2 } 
});

在组件中使用:

<template> <div>Double Count: {{ doubleCount }}</div> 
</template> 
<script> 
export default { computed: { doubleCount() { return this.$store.getters.doubleCount; } } 
}; 
</script>

3. Mutations

Mutations 是更改 Vuex 中 state 的唯一方法,必须是同步函数。每个 mutation 都有一个字符串的事件类型和一个回调函数,该回调函数就是实际进行状态更改的地方。

// store.js 
const store = new Vuex.Store({ // ... mutations: { increment(state) { state.count++; } } 
});

4. Actions

Actions 类似于 mutations,但它是可以包含任意异步操作的方法。Actions 提交的是 mutations,而不是直接变更 state。

// store.js 
const store = new Vuex.Store({ // ... actions: { incrementAsync({ commit }) { setTimeout(() => { commit('increment'); }, 1000); } } 
});

在组件中触发action:

<template> <button @click="incrementAsync">Increment Async</button> 
</template> <script> 
export default { methods: { incrementAsync() { this.$store.dispatch('incrementAsync'); } } 
}; 
</script>

5. Modules

Modules 允许将单一的 Store 分割成多个模块(module)。每个模块拥有自己的 state、mutations、actions、getters 和嵌套子模块。

三、封装 Vuex 为公共组件

为了在多页面之间方便地引用、修改和显示 Vuex 状态,我们可以将 Vuex 的相关逻辑封装为公共组件。

1. 创建 Vuex Store

// store.js 
import Vue from 'vue'; 
import Vuex from 'vuex'; Vue.use(Vuex); export default new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++; } } 
});

2. 创建公共组件

CountDisplay.vue

<template> <div>Count: {{ count }}</div> 
</template> <script> 
export default { computed: { count() { return this.$store.state.count; } } 
}; 
</script>

CountControls.vue

<template> <div> <button @click="increment">Increment</button> </div> 
</template> <script> 
export default { methods: { increment() { this.$store.commit('increment'); } } 
}; 
</script>

3. 在多页面中使用公共组件

在你的 Vue 应用中,你只需要在需要使用这些组件的页面或组件中引入它们即可。

<template> <div> <CountDisplay /> <CountControls /> </div> 
</template> <script> 
import CountDisplay from './CountDisplay.vue'; 
import CountControls from './CountControls.vue'; export default { components: { CountDisplay, CountControls } 
}; 
</script>

四、Vuex 的优势

  • 状态管理的规范化:使得状态管理变得简单和直观,避免了多个组件之间共享状态的混乱。
  • 可预测性:由于状态变更的规范化,使得状态的变化更加可预测和可调试。
  • 组件解耦:通过将状态管理逻辑提取到 Vuex 中,使得组件之间的耦合度降低,提高了组件的可复用性。

五、Vuex 的使用场景

  • 中大型单页应用:在状态管理复杂的大型应用中,Vuex 提供了清晰的结构和易于维护的状态管理方案。
  • 需要多组件共享状态:当多个组件需要共享或修改同一状态时,Vuex 可以避免组件间的直接通信,使代码更加清晰。
  • 与 Vue 开发者工具集成:Vuex 与 Vue 开发者工具紧密集成,方便开发者在开发过程中跟踪和调试状态。

六、类似 Vuex 的组件

  • Redux:与 React 配合使用的状态管理库,与 Vuex 类似,也是集中式状态管理方案。
  • MobX:一个简单的可扩展的状态管理库,使用可观察对象使得状态管理更加直观和高效。

这些库或框架各有优缺点,开发者可以根据项目需求和技术栈来选择合适的方案。

相关文章:

Vuex:Vue.js 的状态管理库

一、Vuex 简介 Vuex 是 Vue.js 的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 的出现解决了组件间共享状态的问题&#xff0c;使得状态管理变得简单、可预测和可维护。 二、Vuex 核心概…...

【简单介绍下Sass】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…...

IM 是什么?

在当今数字化的时代&#xff0c;即时通讯&#xff08;IM&#xff09;已经渗透到人们的日常生活和企业的工作环境中。IM技术的快速i发展为人们提供了一种高效、便捷的沟通方式&#xff0c;不仅推动了社会的信息化进程&#xff0c;也提升了企业的协同效率和竞争力。 作为企业级I…...

俄罗斯方块的代码实现

文章目录 首先是头文件的引入部分接下来是一些预处理指令接下来定义了两个结构体&#xff1a;接下来是全局变量g_hConsoleOutput&#xff0c;用于存储控制台输出句柄。之后是一系列函数的声明最后是main函数源码 首先是头文件的引入部分 包括stdio.h、string.h、stdlib.h、tim…...

出海企业哪种组网方案更省事?

对于出海企业而言&#xff0c;建立跨地区的数据传输和协同工作至关重要&#xff0c;以提升运营效率。因此&#xff0c;网络构建变得迫在眉睫。通过构建企业组网&#xff0c;企业能够加强与海外分支、客户和合作伙伴之间的联系&#xff0c;加速海外业务的发展。 然而&#xff0c…...

triton编译学习

一 流程 Triton-MLIR: 从DSL到PTX - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/671434808Superjomns blog | OpenAI/Triton MLIR 迁移工作简介https://superjom...

源码知识付费系统,在线教学平台需要优化什么?

在线教育关于广大的关注者而言属于快捷度非常高的传达途径&#xff0c;尤其是白日没有过多时间的上班族或学习繁忙的学生&#xff0c;均能够通过可靠的在线教育完结自己的目的。如此巨大的市场潜力使得以在线教育为主的公司数量呈现出直线上升的趋势&#xff0c;很多的在线教育…...

后端常用技能:解决java项目前后端传输数据中文出现乱码、问号问题

0. 问题背景 最近做一个解析数据的小工具&#xff0c;本地运行时都正常&#xff0c;发布到服务器上后在导出文件数据时发现中文全部变成了问号&#xff0c;特此记录下问题解决的思路和过程 1. 环境 java 1.8 springboot 2.6.13 额外引入了fastjson&#xff0c;commons-csv等…...

SpringBoot中使用MongoDB

目录 搭建实体类 基本的增删改查操作 分页查询 使用MongoTemplate实现复杂的功能 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 在ap…...

【TS】入门

创建项目 vscode自动编译ts 生成配置文件 tsc --init 然后发现终端也改变了&#xff1a;...

Apache ECharts

Apache ECharts介绍&#xff1a; Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 官网地址&#xff1a;https://echarts.apache.org/zh/index.html Apache ECh…...

超详细的胎教级Stable Diffusion使用教程(四)

这套课程分为五节课&#xff0c;会系统性的介绍sd的全部功能和实操案例&#xff0c;让你打下坚实牢靠的基础 一、为什么要学Stable Diffusion&#xff0c;它究竟有多强大&#xff1f; 二、三分钟教你装好Stable Diffusion 三、小白快速上手Stable Diffusion 四、Stable dif…...

串口属性中的BM延时计时器问题

如果使用程序修改则需要修改注册表对应位置如下 第一个示例&#xff08;217&#xff09; 第二个示例&#xff08;219&#xff09; 需要注意的事情是修改前必须点查看串口名称&#xff08;例如上图是com5&#xff09; 程序修改&#xff1a; 有没有办法以编程方式更改USB <…...

PyQt6--Python桌面开发(8.QPlainTextEdit纯文本控件)

QPlainTextEdit纯文本控件...

Java | Leetcode Java题解之第83题删除排序链表中的重复元素

题目&#xff1a; 题解&#xff1a; class Solution {public ListNode deleteDuplicates(ListNode head) {if (head null) {return head;}ListNode cur head;while (cur.next ! null) {if (cur.val cur.next.val) {cur.next cur.next.next;} else {cur cur.next;}}return…...

重生奇迹mu再生宝石怎么用有什么用

重生奇迹mu再生宝石有2个用处&#xff1a; 1、在玛雅哥布林处给380装备加PVP属性4追4以上的380级装备,守护宝石一颗,再生宝石一颗,成功得到PVP装备,失败宝石消失,装备无变化&#xff1b; 2、给非套装点强化属性用法跟祝福,灵魂,生命一样直接往装备上敲,成功得到随机强化属性一…...

pdf 文件版面分析--pdfplumber (python 文档解析提取)

pdfplumber 的特点 1、它是一个纯 python 第三方库&#xff0c;适合 python 3.x 版本 2、它用来查看pdf各类信息&#xff0c;能有效提取文本、表格 3、它不支持修改或生成pdf&#xff0c;也不支持对pdf扫描件的处理 import glob import pdfplumber import re from collection…...

PostgreSQL的学习心得和知识总结(一百四十三)|深入理解PostgreSQL数据库之Support event trigger for logoff

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…...

https免费证书获取

获取免费证书的网址&#xff1a; Certbot 1. 进入你的linux系统&#xff0c;先安装snapd&#xff0c; yum install snapd 2. 启动snapd service snapd start 3.安装 Certbot snap install --classic certbot 注意如下出现此错误时&#xff0c;需要先建立snap 软连接后&am…...

C语言 | Leetcode C语言题解之第74题搜索二维矩阵

题目&#xff1a; 题解&#xff1a; bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) {int m matrixSize, n matrixColSize[0];int low 0, high m * n - 1;while (low < high) {int mid (high - low) / 2 low;int x matrix[mid /…...

Lovable应用性能优化全链路(首屏加载≤300ms实测方案)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Lovable应用性能优化全链路概览 Lovable 是一款面向高并发、低延迟场景的现代 Web 应用框架&#xff0c;其性能优化需贯穿开发、构建、部署与运行时全生命周期。理解各环节的协同关系与瓶颈传导路径&#xff…...

网易云音乐无损FLAC下载工具:轻松获取专业级音乐资源

网易云音乐无损FLAC下载工具&#xff1a;轻松获取专业级音乐资源 【免费下载链接】NeteaseCloudMusicFlac 根据网易云音乐的歌单, 下载flac无损音乐到本地.。 项目地址: https://gitcode.com/gh_mirrors/nete/NeteaseCloudMusicFlac 还在为在线音乐平台的音质限制而烦恼…...

英语发音宝库:11万+单词MP3音频一键获取指南

英语发音宝库&#xff1a;11万单词MP3音频一键获取指南 【免费下载链接】English-words-pronunciation-mp3-audio-download Download the pronunciation mp3 audio for 119,376 unique English words/terms 项目地址: https://gitcode.com/gh_mirrors/en/English-words-pronu…...

Orbit:革命性记忆增强平台的完整指南

Orbit&#xff1a;革命性记忆增强平台的完整指南 【免费下载链接】orbit Experimental spaced repetition platform for exploring ideas in memory augmentation and programmable attention 项目地址: https://gitcode.com/gh_mirrors/orbit1/orbit Orbit是一个革命性…...

OpenHarmony富设备开发实战:基于DAYU200的硬件选型、系统烧录与AI应用开发

1. DAYU200&#xff1a;OpenHarmony富设备开发的“敲门砖”与“试验田”如果你是一名对OpenHarmony感兴趣&#xff0c;尤其是想涉足标准系统&#xff08;也就是我们常说的富设备&#xff09;开发的工程师或爱好者&#xff0c;那么“开发板选型”大概率是你遇到的第一个难题。几…...

欧姆龙G9SP安全控制系统中,如何通过NB触摸屏实现远程复位与状态监控?

欧姆龙G9SP安全控制系统与NB触摸屏的深度集成&#xff1a;远程复位与状态监控实战指南 在工业自动化领域&#xff0c;安全控制系统的可靠性与操作便捷性同样重要。欧姆龙G9SP作为专业的安全控制器&#xff0c;与NB系列触摸屏的协同工作&#xff0c;能够为生产线提供既安全又高…...

在PC上体验PS4游戏:shadPS4模拟器入门与实战指南

在PC上体验PS4游戏&#xff1a;shadPS4模拟器入门与实战指南 【免费下载链接】shadPS4 PS4 emulator for Windows,Linux,MacOS 项目地址: https://gitcode.com/gh_mirrors/shad/shadPS4 还在为无法在PC上畅玩PS4独占游戏而烦恼吗&#xff1f;想象一下&#xff0c;那些只…...

如何通过G-Helper让华硕笔记本性能与续航获得双重提升?

如何通过G-Helper让华硕笔记本性能与续航获得双重提升&#xff1f; 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, E…...

港澳通行证照片怎么手机拍?2026 手机拍摄规格要求和实用方法全解

准备办理港澳通行证却被照片规格搞得不知所措&#xff1f;其实用手机就能拍出符合要求的证件照&#xff0c;关键是掌握正确的拍摄方法和规格标准。这篇文章将详细讲解港澳通行证照片的手机拍摄方法&#xff0c;包括规格要求、拍摄步骤&#xff0c;以及如何后期处理让照片完美达…...

DH1766电源短路测试避坑指南:为什么你的保险丝熔断时间和想象的不一样?

DH1766电源短路测试中的保险丝熔断现象深度解析 在电子工程实验室中&#xff0c;可编程电源的短路测试是验证电路保护器件性能的常规操作。然而&#xff0c;当使用DH1766这类高精度电源进行测试时&#xff0c;许多工程师都会遇到一个令人困惑的现象&#xff1a;保险丝的实际熔断…...