veux
什么是Vuex?
vuex是一个专门为vue.js设计的集中式状态管理架构。状态、我理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态。简单的说就是data中需要共用的属性
优点
1、Vuex的状态存储是响应式的:就是当你的组件使用到了这个Vuex的状态,一旦它改变了,所有关联的组件都会自动更新相对应的数据,这样开发者省事很多。
2、不能直接修改Vuex的状态:如果是个全局对象变量,要修改很容易,但是在Vuex中不能这样做,想修改就得使用Vuex提供的唯一途径:显示地提交(commint)mutations来实现修改(没了解过这里没关系,下一节前端君会有介绍)。这样做的好处就是方便我们跟踪每一个状态的变化,在开发过程中调试的时候,非常实用。
state访问状态对象
const state ,这个就是我们说的访问状态对象,它就是我们SPA(单页应用程序)中的共享值。
学习状态对象赋值给内部对象,也就是把stroe.js中的值,赋值给我们模板里data中的值。有三种赋值方
式
一、 通过computed的计算属性直接赋值
computed属性可以在输出前,对data中的值进行改变,我们就利用这种特性把store.js中的state值赋值
给我们模板中的data值。
二、通过mapState的对象来赋值
我们首先要用import引入mapState。
三、通过mapState的数组来赋值
Vuex的五个核心概念
State
State是我们唯一的数据源,也就是说我们需要把组件里面的一些状态提取出来放到State里面去,State
是我们唯一的载体,我们必须要去定义我们的State
Getters
通过Getters可以派生出一些新的状态 ;举一个例子,例如购物车的数量,大于99的时候,我们需要变
成"99+";这时候你仅仅定义一个state肯定是满足不了的;我们需要重新去延伸一个getters去做我们这样
的一个操作
Mutations
更改Vuex的store中的状态的唯一方法是提交mutation,mutations里面只定义了函数,函数内部给值加1;
但是需要有些地方去触发它
store.commit('increment') //去提交这个函数 这样我们的值才能去+1
Actions
用于提交 mutation,而不是直接变更状态,可以包含任意异步操作。
只有通过action=>mutations=>states,这个流程进行操作
Modules
面对复杂的应用程序,当管理的状态比较多时;我们需要将vuex的store对象分割成模块(modules)。
我对vuex的理解
Vuex其实也并不是很高大上的东西,它是一个公共状态管理库,它在业务非常复杂的时候才会使用
比如:
多个视图依赖于同一状态。
来自不同视图的行为需要变更同一状态。