几句话带你理解Vuex基础概念

简介: 几句话带你理解Vuex基础概念

前言


在日常Vue开发中都离不开使用Vuex进行功能的实现,本文就带你对于vuex的基本概念有一个基本的认识,方便日后更好的使用其编码。


一.Vuex是什么?


Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态的一致性。Vuex的核心概念包括state(状态)、mutations(变更)、actions(动作)和getters(获取器)。通过Vuex,开发者可以更方便地管理应用的状态,实现组件之间的通信和数据共享。


二.个人理解


负责存储和管理组件间状态值的共享数据,就像是多线程环境下的共享变量区域。


三.核心概念


3.1.State


State是存储应用程序中所有组件共享的数据的地方。可以理解为全局共享数据源。它类似于组件中的data属性,但是State的数据可以在整个应用程序中共享。可以通过在组件中使用this.$store.state来访问State中的数据或者还可以通过mapState辅助函数来访问state中的数据。代码示例如下:

<!-- 全局共享数据源,类似于java中声明全局变量 -->
const state = () => ({
  accessToken: getAccessToken(),
  username: '',
  avatar: '',
  permissions: [],
  })
//首先,在Vue组件中引入`mapState`函数:
import { mapState } from 'vuex';
//然后,在`computed`中使用`mapState`函数来计算属性值:
computed: {
  ...mapState({
    // 将state中的count属性映射为组件的count属性
    count: state => state.count,
    // 将state中的message属性映射为组件的message属性
    message: state => state.message
  }),
  // 可以使用常规的计算属性来计算state中的属性值
  doubleCount() {
    return this.count * 2;
  }
}


3.2.Mutations


Mutations是用来修改State的唯一方式。它们是同步的函数,用于处理State的变更操作。每个Mutation都有一个字符串类型的事件类型和一个回调函数,该回调函数接受State作为第一个参数,并可以接受额外的参数来进行状态的变更。可以通过this.$store.commit方法来触发Mutation。

//变更共享数据源中的数据,不可以使用this.$store.state修改数据。通过this.$store.commit调用函数
const mutations = {
  setAccessToken(state, accessToken) {
    state.accessToken = accessToken
    setAccessToken(accessToken)
  },
  setUsername(state, username) {
    state.username = username
  },
  setAvatar(state, avatar) {
    state.avatar = avatar
  },
  setPermissions(state, permissions) {
    state.permissions = permissions
  },
}


3.3.Actions


Actions用于处理异步操作和复杂的业务逻辑。它们类似于Mutations,但是可以包含任意的异步操作。Actions通过提交Mutations来间接地变更State。每个Action都有一个字符串类型的事件类型和一个回调函数,该回调函数接受一个与Store实例具有相同方法和属性的上下文方法来触发Action。

//处理异步函数任务,通过this.$store.dispatch触发函数
const actions = {
  setPermissions({ commit }, permissions) {
    commit('setPermissions', permissions)
  },
  //异步登录
  async login({ commit }, userInfo) {
    const { data } = await login(userInfo)
    const accessToken = data[tokenName]
    if (accessToken) {
      commit('setAccessToken', accessToken)
      const hour = new Date().getHours()
      const thisTime =
        hour < 8
          ? '早上好'
          : hour <= 11
          ? '上午好'
          : hour <= 13
          ? '中午好'
          : hour < 18
          ? '下午好'
          : '晚上好'
      Vue.prototype.$baseNotify(`欢迎登录${title}`, `${thisTime}!`)
    } else {
      Vue.prototype.$baseMessage(
        `登录接口异常,未正确返回${tokenName}...`,
        'error'
      )
    }
  },


3.4.Getters


Getters用于从State中派生出一些状态。它们类似于组件中的计算属性,可以根据State的值进行计算和返回。Getters接收State作为第一个参数,可以接收其他Getters作为第二个参数。可以通过this.$store.getters来访问Getters中的数据。返回加工处理后的数据,类似于实体类getter方法。

//返回加工处理后的新的数据,返回值,类似于实体类的getter
const getters = {
  accessToken: (state) => state.accessToken,
  username: (state) => state.username,
  avatar: (state) => state.avatar,
  permissions: (state) => state.permissions,
}


总结


最后,感谢大家对于Vuex相关知识的阅读。此文章专注于帮助大家理解Vuex是什么?有关于其用法没有作出具体的解释。有什么疑问请在评论区提出,再一次感谢大家!


目录
相关文章
|
7月前
|
数据采集 监控 数据挖掘
静态IP代理的应用场景及企业使用指南
静态IP代理提供固定IP地址,具备高稳定性和安全性,适用于跨境电商、社交媒体管理、SEO、网络数据采集、远程办公及爬虫分析等场景。企业通过选择可靠的供应商、配置网络设置并合理应用,可有效提升业务效率和安全性。例如,某电商公司利用静态住宅代理IP进行数据采集,成功分析竞争对手策略,实现销售额20%的增长。
224 1
|
7月前
|
人工智能 固态存储 iOS开发
5分钟搞定Photoshop 2025安装:官方下载+许可证激活避坑指南
Adobe Photoshop 2025 是 Adobe 公司推出的最新图像处理软件,广泛应用于平面设计、摄影后期和 UI 设计等领域。其核心功能包括智能 AI 工具(一键抠图、生成填充等)、高效工作流(优化图层管理与色彩调整)、跨平台兼容(支持 Windows 11 和 macOS 15)以及云协作功能(与 Adobe Creative Cloud 集成)。本文详细介绍软件的安装流程、系统要求、正版激活方法及常见问题解决方案,并提供扩展学习资源,帮助用户更好地掌握这款强大工具。
28080 3
|
8月前
|
机器学习/深度学习 传感器 数据采集
《DeepSeek赋能工业互联网:解锁数据深度分析新姿势》
DeepSeek作为AI大模型领域的佼佼者,为工业互联网的数据深度分析开辟了新路径。其智能传感器融合技术精准高效地采集各类工业设备数据,并结合边缘计算进行预处理,确保数据实时传输。强大的深度学习算法能挖掘复杂工业数据中的潜在价值,预测生产趋势并实时监测异常,多模态数据融合分析则实现全面洞察。自适应学习能力保障模型持续优化,助力企业降本增效、创新发展,推动制造业迈向新高度。
234 3
|
5月前
|
存储 索引 Python
[oeasy]python093_find方法_指数为负数_index_实际效果
本文介绍了Python中`find`方法与索引(index)的使用,包括负数索引的实际效果。回顾了`eval`函数的应用,并强调类名如`str`、`int`、`list`不可用作变量名以避免覆盖。通过示例解析了负数索引在字符串和列表中的作用,以及`index`方法的三个参数(value、start、stop)的用法。同时对比了`index`和`find`方法的区别:`index`找不到子串时抛出`ValueError`,而`find`返回-1。最后总结了正负索引的使用场景及两者的特性,提供了相关学习资源链接。
371 8
|
11月前
|
存储 供应链 算法
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景
387 0
计算机硬件清洁与防尘
【8月更文挑战第2天】
374 1
|
算法 Linux 调度
深入理解操作系统:进程管理与调度策略
在数字世界的心脏跳动着的,是那些不眠不休的操作系统。它们如同宇宙中的星系,以精妙的进程管理和调度策略维系着计算秩序的和谐。本文将带您穿梭于操作系统的微观世界,探索进程生命周期的每一个阶段,以及如何通过调度算法确保系统的高效与公平。正如甘地所言:“你必须成为你希望在世界上看到的改变。”在操作系统的世界中,这句话激励我们深入理解并改进这些复杂的系统。
|
消息中间件 缓存 Shell
跟我一起来学OpenStack部署
跟我一起来学OpenStack部署
666 0
|
机器学习/深度学习 编解码 人工智能
一种基于YOLOv8改进的高精度表面缺陷检测网络, NEU-DET和GC10-DET涨点明显(原创自研)
【7月更文挑战第3天】一种基于YOLOv8改进的高精度表面缺陷检测, 在NEU-DET和GC10-DET任务中涨点明显;
484 1
|
程序员 Windows
程序员必备技能:一键创建windows 服务
该内容是关于在Windows上创建服务的教程。通过一个BAT脚本示例,用户可以将程序设置为开机启动或持续运行的服务。脚本设置了服务名称、显示名和描述,并指定了程序路径和参数。将代码保存为.bat文件,以管理员权限运行,即可创建服务。之后在Windows服务管理中找到并启动该服务。
361 4