几句话带你理解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月前
|
JavaScript 前端开发 编译器
解密Vue 3:透过原理看框架,揭开它的神秘面纱
解密Vue 3:透过原理看框架,揭开它的神秘面纱
|
4月前
|
Python
Python函数式编程:你真的懂了吗?理解核心概念,实践高阶技巧,这篇文章带你一次搞定!
【8月更文挑战第6天】本文介绍了Python中的函数式编程,探讨了高阶函数、纯函数、匿名函数、不可变数据结构及递归等核心概念。通过具体示例展示了如何利用`map()`和`filter()`等内置函数处理数据,解释了纯函数的一致性和可预测性特点,并演示了使用`lambda`创建简短函数的方法。此外,文章还强调了使用不可变数据结构的重要性,并通过递归函数实例说明了递归的基本原理。掌握这些技巧有助于编写更清晰、模块化的代码。
48 3
|
前端开发 JavaScript 算法
解密二叉树:探索概念、类型与常见算法的奥秘(顺带说一下React中的reconcile)
二叉树作为程序的一种数据结构,应用广泛,比如React中的reconcile过程,Fiber树的调和过程。确实,在React中,Fiber树是通过child和sibling连接子节点和兄弟节点的方式来表示的,这与普通的二叉树有所不同。 在React中,reconcile过程是将虚拟DOM转化为实际DOM的过程。通过比较新旧两棵树的差异,React可以高效地更新实际DOM,而不是每次都完全重新渲染整个DOM树。这个过程中会涉及到对Fiber树的遍历和调整,确保更新只发生在需要更新的部分。 Fiber树作为一种数据结构,可以帮助React跟踪组件的状态和变化,以及进行调度和渲染。它使用链表的形
61 1
解密二叉树:探索概念、类型与常见算法的奥秘(顺带说一下React中的reconcile)
|
前端开发 JavaScript
React框架第七课 语法基础课《第一课React你好世界》(二)
React框架第七课 语法基础课《第一课React你好世界》(二)
84 0
|
前端开发 JavaScript 编译器
React框架第七课 语法基础课《第一课React你好世界》(一)
React框架第七课 语法基础课《第一课React你好世界》(一)
113 0
|
存储 Web App开发 移动开发
【长文慎入】一文吃透 react 事件机制原理
上个月有幸研究了 react 事件机制这个知识点,并且在公司内部把自己的理解进行了分享。现在趁还算热乎赶紧的整理下来,留住这个长脸的时刻。
474 1
【长文慎入】一文吃透 react 事件机制原理
|
JavaScript 前端开发 中间件
Redux 原理探秘
Redux 是一个非常不错的状态管理库,和 Vuex 不同的是 Redux 并不和 React 强绑定,你甚至可以在 Vue 中使用 Redux。当初的目标是创建一个状态管理库,来提供最简化 API。
141 0
|
JavaScript 前端开发 数据管理
大白话理解和初步使用vuex
大白话理解和初步使用vuex
132 0
|
JavaScript
Vuex 通俗版教程告诉你Vuex怎么用
Vuex 通俗版教程告诉你Vuex怎么用
|
前端开发 JavaScript API
我明白了,看哲波老师react设计哲学的观后感
react 是一个视图层的类库,主要是做dom渲染和响应事件的事情,如果想更高的把控它,可以有脱离基础语法束缚的哲学,从而能够站的更高。
403 0
我明白了,看哲波老师react设计哲学的观后感

热门文章

最新文章