Vuex

摘录自文档,自己面试用的
Vuex 是一个集中式状态管理库,当多个组件需要共享状态时使用,并且可以通过调试工具 devtools,保存状态快照,可以记录状态改变。 Vuex的核心是 store(仓库),store里面维护着state,getters,mutations,actions,modules

Vuex 和单纯的全局对象有以下两点不同:
一、Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。如何在 Vue 组件中展示state呢?由于 Vuex 的状态存储是响应式的,从 store 实例中读取状态最简单的方法就是在计算属性中返回某个状态:

const Counter = {
  template: `<div>{{ count }}</div>`,
  computed: {
    count () {
      return this.$store.state.count
    }
  }
}

每当 store.state.count 变化的时候, 都会重新求取计算属性,并且触发更新相关联的 DOM。
当一个组件需要获取多个状态的时候,将这些状态都声明为计算属性会有些重复和冗余。为了解决这个问题,我们可以在计算属性computed中使用 mapState 辅助函数帮助我们生成计算属性。
二、我们不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

getters

getter可以认为是 store 的计算属性(computed)。就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

mutations

改变state, mutation 必须是同步函数

mutations: {
  increment (state, n) {
    state.count += n
  }
}
store.commit('increment', 10)

action

Action 类似于 mutation,不同在于:

Action 提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作。
你在组件中使用 this.$store.dispatch(‘xxx’) 分发 action,或者使用 mapActions 辅助函数将组件的 methods 映射为 store.dispatch 调用(需要先在根节点注入 store),store.dispatch 返回的是 Promise对象

store.dispatch('actionA').then(() => {
  // ...
})
### Vuex 使用教程及文档 #### 安装与配置 对于 Vue 应用程序而言,Vuex 是一种用于管理状态的插件。当使用 Vue 3 时,默认情况下应安装 Vuex 4;而对于 Vue 2,则需指定版本 `npm install vuex@3` 来确保兼容性[^1]。 创建一个新的 Vuex store 非常简单,在项目的根目录下建立名为 `store` 的文件夹,并在此文件夹内部放置一个 `index.js` 文件。此文件通常会自动填充如下所示的基础代码: ```javascript import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); export default new Vuex.Store({ state: { count: 20, }, mutations: {}, actions: {}, modules: {} }); ``` 这段脚本定义了一个简单的 Store 实例,其中包含了初始的应用状态 (`state`) 和其他可选部分如变更函数 (`mutations`)、异步操作处理逻辑 (`actions`) 及模块化分割功能 (`modules`)[^2]。 #### Vuex 工作原理概述 Vuex 提供了一种机制使得不同组件间可以共享数据而无需直接相互引用或者传递参数。例如,考虑多个地方都需要访问某个特定的数据项——比如当前打开的文件路径列表。如果不借助像 Vuex 这样的工具,开发者可能不得不设置复杂的事件监听器网络来同步这些信息变化。然而有了 Vuex 后,任何想要更新或读取该值的地方只需关注于修改存储在 Vuex 中对应的属性即可[^3]。 更进一步讲,Vuex 将所有的状态集中起来统一管理和维护,这不仅限于页面上的显示内容还包括用户的交互行为产生的影响等.它允许我们更加清晰地追踪到每一个改变是如何发生的以及谁触发了这个过程. #### 构建响应式的应用状态管理系统 为了构建一个完整的基于 Vuex 的状态管理体系,除了上述提到的核心概念外还需要理解几个重要方面: - **State**: 存储着整个应用程序的状态. - **Getters**: 类似于计算属性的功能,可以从 State 导出派生出来的额外信息. - **Mutations**: 唯一能够更改 State 的方法,必须是同步执行的操作. - **Actions**: 处理异步任务并最终提交 Mutation 来完成实际的变化. - **Modules**: 把大型应用拆分成小块以便更好地组织代码结构. 通过合理运用以上各个组成部分,可以使我们的前端开发变得更加高效有序.[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值