首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第 14 章 基于Vue的网络框架vue-axios的应用
14.1 使用vue-axios请求天气数据
14.1.1 使用互联网上免费的数据服务
14.1.2 使用vue-axios进行数据请求
14.2 vue-axios实用功能介绍
14.2.1 通过配置的方式进行数据请求
14.2.2 请求的配置与响应数据结构
14.2.3 拦截器的使用
14.3 实战:天气预报应用
14.3.1 搭建页面框架
14.3.2 实现天气预报应用核心逻辑
第 15 章 Vue路由管理
15.1 Vue Router的安装与简单使用
15.1.1 Vue Router的安装
15.1.2 一个简单的Vue Router的使用示例
15.2 带参数的动态路由
15.2.1 路由参数匹配
15.2.2 路由匹配的语法规则
15.2.3 路由的嵌套
15.3 页面导航
15.3.1 使用路由方法
15.3.2 导航历史控制
15.4 关于路由的命名
15.4.1 使用名称进行路由切换
15.4.2 路由视图命名
15.4.3 使用别名
15.4.4 路由重定向
15.5 关于路由传参
15.6 路由导航守卫
15.6.1 定义全局的导航守卫
15.6.2 为特定的路由注册导航守卫
15.7 动态路由
第 16 章 Vue状态管理
16.1 认识Vuex框架
16.1.1 关于状态管理
16.1.2 安装与体验Vuex
16.2 Vuex中的一些核心概念
16.2.1 Vuex中的状态state
16.2.2 Vuex中的Getter方法
16.2.3 Vuex中的Mutation
16.2.4 Vuex中的Action
16.2.5 Vuex中的Module 333
当前位置:
首页>>
技术小册>>
TypeScript和Vue从入门到精通(五)
小册名称:TypeScript和Vue从入门到精通(五)
### 16.1 认识Vuex框架 在Vue.js的应用开发中,随着项目复杂度的增加,组件间的状态管理往往会变得棘手。尤其是当多个组件需要共享同一个状态时,传统的父子组件通信方式(如props和events)可能会显得力不从心。为了解决这个问题,Vue.js生态系统引入了Vuex,一个专为Vue.js应用程序开发的状态管理模式加库。Vuex集中管理所有组件的共享状态,并以相应的规则保证状态以一种可预测的方式发生变化。 #### 16.1.1 Vuex的基本概念 **1. 状态(State)** Vuex中的状态(State)是驱动应用的数据源,它类似于组件中的`data`。不过,Vuex的状态是存储在单一的全局对象中的,这样可以让任何组件访问到它。状态是响应式的,当状态发生变化时,视图会自动更新。 **2. 变更状态(Mutations)** Vuex中的状态不能直接被修改,唯一修改状态的方式是通过提交(commit)mutations。Mutations是同步函数,用于改变状态。这样设计的目的是为了追踪状态的变化,便于调试和记录。 **3. 动作(Actions)** Actions类似于mutations,但它们是异步的。如果你需要在改变状态之前执行一些异步操作(如API调用),那么应该使用actions。Actions可以包含任意异步操作,并通过提交mutations来间接变更状态。 **4. Getters** 有时候我们需要从state中派生出一些状态,例如对列表进行过滤并计数。Getters就像组件中的computed属性,它们允许我们对state中的数据进行计算并返回新的值。与computed属性不同的是,getters可以是组件外部访问的。 **5. Modules** 当Vuex管理的状态非常多时,可以将store分割成模块(modules)。每个模块拥有自己的state、mutations、actions、getters等,使得状态管理更加模块化和易于维护。 #### 16.1.2 为什么使用Vuex - **集中化管理状态**:Vuex提供了一个单一的状态树,使得应用中的所有状态都集中在一个地方,便于管理和维护。 - **预测性**:由于状态的变更必须通过mutations来进行,并且mutations是同步的,这使得我们可以更容易地追踪状态的变化,从而提高应用的可预测性。 - **组件间通信**:Vuex使得组件间的通信变得简单,不再需要通过props和events层层传递数据。 - **易于调试**:Vue开发者工具支持Vuex,可以方便地查看和调试应用的状态。 #### 16.1.3 安装与配置Vuex 在Vue项目中安装Vuex非常简单,通常通过npm或yarn来安装。 ```bash npm install vuex --save # 或者 yarn add vuex ``` 安装完成后,需要在Vue项目中配置Vuex。一种常见的配置方式是在项目的入口文件中(如`main.js`或`main.ts`)创建Vuex的store,并将其传递给Vue实例。 ```javascript import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++; } } }); new Vue({ el: '#app', store, // 其他选项... }); ``` #### 16.1.4 使用Vuex **1. 访问State** 在组件中,可以通过`this.$store.state.xxx`来访问state中的数据。但是,为了提高代码的可维护性和可读性,Vuex推荐使用`computed`属性或`mapState`辅助函数来访问state。 ```javascript computed: { count() { return this.$store.state.count; } // 或者使用mapState辅助函数 // ...mapState(['count']) } ``` **2. 提交Mutations** 在组件中,可以通过`this.$store.commit('mutationName', payload)`来提交一个mutation。同样地,Vuex提供了`mapMutations`辅助函数来简化代码。 ```javascript methods: { increment() { this.$store.commit('increment'); // 或者使用mapMutations辅助函数 // ...mapMutations(['increment']) // 然后在模板中直接调用this.increment() } } ``` **3. 分发Actions** 分发actions与提交mutations类似,但actions主要用于处理异步操作。 ```javascript actions: { incrementIfOddOnRootSum({ state, commit, rootState }) { if ((state.count + rootState.count) % 2 === 1) { commit('increment'); } } }, // 组件中分发action methods: { incrementIfOdd() { this.$store.dispatch('incrementIfOddOnRootSum'); } } ``` **4. 使用Getters** Getters的使用方式与计算属性类似,可以通过`this.$store.getters.xxx`来访问。Vuex同样提供了`mapGetters`辅助函数来简化代码。 ```javascript computed: { // 使用对象展开运算符将getter混入computed对象中 ...mapGetters([ 'doneTodosCount', 'anotherGetter', // ... ]) } ``` **5. Modules** 当Vuex的store变得复杂时,可以通过modules将其分割成更小的部分。每个module拥有自己的state、mutations、actions、getters等。 ```javascript const moduleA = { state: () => ({ ... }), mutations: { ... }, actions: { ... }, getters: { ... } } const moduleB = { state: () => ({ ... }), // ... } const store = new Vuex.Store({ modules: { a: moduleA, b: moduleB } }) ``` #### 16.1.5 小结 Vuex是Vue.js应用中状态管理的标准模式,它通过集中化管理应用的所有状态,并提供一套严格的规则来保证状态以一种可预测的方式发生变化。Vuex的核心概念包括state、mutations、actions、getters和modules,它们共同构成了Vuex的状态管理机制。在实际项目中,合理使用Vuex可以极大地提高应用的可维护性和开发效率。 通过本节的介绍,相信你已经对Vuex有了基本的认识。接下来,你可以开始在你的Vue.js项目中尝试使用Vuex来管理状态,并体验它带来的便利和高效。随着你对Vuex的深入使用,你会发现更多高级特性和最佳实践,从而进一步提升你的Vue.js应用开发能力。
上一篇:
第 16 章 Vue状态管理
下一篇:
16.1.1 关于状态管理
该分类下的相关小册推荐:
Vue.js从入门到精通(三)
Vue面试指南
移动端开发指南
TypeScript和Vue从入门到精通(二)
Vue.js从入门到精通(二)
Vue原理与源码解析
TypeScript和Vue从入门到精通(四)
VUE组件基础与实战
Vue3技术解密
Vue.js从入门到精通(四)
TypeScript和Vue从入门到精通(一)
vue项目构建基础入门与实战