1、什么是vuex?
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组的状态,并以相应的规则保证状态以一种可预测的方式发生变化
2、vuex 的用途
能够实现组件之间数据的共享。
3、vuex的工作原理:
在组件中通过dispatch来调用actions中的方法,在actions中通过commit来调用mutations中的方法mutaions中的方法中可以直接操作state中的数据,只要state中的数据发生改变,就会立即响应到所有的组件上
4、vuex的五大核心
1、state:定义数据
2、mutations:定义操作数据的方法,简单的操作,不能是异步的
存储方法 用来直接操作state中的数据。我们现在mutations中定义一个方法,设置两个参数分别是state和自定义参数,然后在页面中使用this.$store.commit('定义的方法名',参数)。
3、actions:定义操作数据的复杂的方法,比如AJAX等异步代码
4、getters:先处理state中的数据,然后返回处理之后的结果,有点类似过滤器
const store = new Vuex.Store({
//state存储应用层的状态
state:{
count:5 //总数:5
},
getters:{
newCount:state => state.count * 3
}
})
5、modules:分模块使用
const moduleAA = {
state: { ... },
mutations: { ... },
actions: { ... },
getters: { ... }
}
const moduleBB = {
state: { ... },
mutations: { ... },
actions: { ... }
}
const store = new Vuex.Store({
modules: {
a: moduleAA,
b: moduleBB,
})
6、plugins:插件(持久化存储)
5、vuex 持久化
1、先在小黑框下载
cnpm install vuex-persistedstate --save
2、然后再store/index 上面配置
import persistedState from 'vuex-persistedstate'
然后继续添加
plugins: [persistedState()]
示例代码如下:
6、vuex的使用
(1)基本使用 在vue的原型上有一个$store对象可以调用vuex的任何东西
-
state this.$store.state.**
-
mutations this.$store.commit("方法名",参数) 参数只能传一个
-
actions this.$store.dispatch("方法名",参数)
-
getters this.$store.getters.**
-
module this.$store.模块名.state
(2)使用映射函数
将vuex的中的成员映射到组件中然后使用
mapState mapMutations mapGetters mapActions
步骤:
-
在组件中导入需要的函数
import {mapState,mapGetters **} from "vuex"
-
映射函数在组件中对应位置
-
mapState ---computed
-
mapGetters --computed
-
mapMutations--methods
-
mapActions--methods
-
本人如果写有不对的地方 ,望广大读者提出,定会及时修改