Vuex是什么?
vuex 是 vue 的一个插件,专门用来管理 vue 组件之间的状态的,Vuex 常见的有 {
state
,getters
,actions
,mutations
}
怎么使用vuex?
1 | import Vue from 'vue' // 1. 引入vue |
vuex 中的 state
是什么? 怎么使用?
state 就相当于 组件中的
data
,不过 state 是独立于组件之外的,用来存储组件之间公共的数据,而 data 是存储组件内部的数据的,不同组件之间,很难得访问。
定义
1 | const store = new vuex.store({ |
获取
1 | // 在其他组件的HTML代码中,通过 $store.state.msg 就可以拿到定义的公共数据, |
赋值
当一个组件内的数据,要在另外一个组件内使用的时候,那么就需要,将组件内的数据,赋值(放到)给 vuex 实例 store 的 state 数据中,
1 | // 组件 A |
vuex 的 mutations 是干啥的?
mutations 就相当于 vue 的 methods ,是用来修改 state 里的数据的。
这个里面必须是同步的
注意: 如果要在子组件中修改公共数据,不能使用 this.$store.state.msg++ 这种方法,虽然这也能改变公共数据,但是如果很多个组件同时修改同一个数据,当数据改错了,那么都不容易知道是哪个环节出错了。
1 | mutations:{ |
获取触发函数
this.$store.commit(函数名,要改变的值)
这个很好理解:将 $store 中的函数释放出来,并且在释放的时候,传递个值进去
vuex 中的 getter 是做什么的?
getter 是用来获取state里的值,然后是类似过滤器还有计算属性的功能,
getter 中定义的方法内部依赖的数据发生变化会自动重新调用函数计算返回值
1 | state:{ |
获取
1 | //HTML中使用获取 |
actions是啥? 能干啥?
这个类似于 mutations,但是与 mutations 不同的是,actions 里面可以异步方法,也可以定义同步方法。
它接收一个 store 镜像类型的 context 对象,可以使用 context.commit(mutations里定义的方法) 调用 mutations 里定义的方法,或者使用 context.state 和 context.getters 来获取 state 和 getters
1 | actions:{ |
触发
通过
store.dispatch('increment')
触发定义在actions
里的函数
评论加载中