Vuex学习总结State,Mutation,Action,Getter
Vue 说白了就是一个租赁仓库,保存了一些数据,这些数据可以被大家公用,哪个组件想要调用就引入即可,
1.State
什么是vuex-----state?
state及类似与组件中的data数据,既然类似为何还要写在vuex中的state里面呢?
组件中的data数据仅仅是局部的适用于该组件中的使用,其他的组件不能获取使用, 而vuex里面的state数据是全局的可以再任何一个组件使用,但是我们也可以在单个组件中修改这个全局的store state数据,
组件中如何使用state?
首先我们需要把 vuex全局引用,main.js,这里是建立单独文件store故需要引入
//main.js文件
import router from'./router';
import store from'./store';new Vue({ router, store})
new Vue({ router, store })
stat{{a}}或者{{A}}e在组件中使用需要在计算属性接收一下(暂且就理解为是接收吧)
{{a}}或者{{A}}
{{a}}或者{{A}}<template>{{a}}或者{{A}}</template>
import {mapState} from'vuex'
export default {
computed:mapState({'a':A,'b':B})
}
{{a}}或者{{A}}
或者
computed:mapState(['A','A'])
mapstate 即可以接受对象,也可以接受数组。最终返回的是一个对象。
2.Mutation
mutations 类似于组件里面的methods在mutations里面可以对state的数据进行修改,比如
state:{
num:[1,2,3,4]
},
mutaions:{
numChange(state){
state.num[0]++
}
}
我们不嫩能够直接调用一个mutation handler这个选项更像是时间注册,“当触发一个类型为incroment”的mutation时2,调用此函数,‘要唤醒一个mutation handler’,你需要以相应的type调用store.commit方法:
store.commit('numChange')
3.Action
action的作用
actions 类似于mutations 大体归类到事件;
mutation像事件注册,需要相应的条件触发,action像是管理触发条件的;例子如下
Action事件怎么触发?
action 在组件中被触发,分发action,或者使用mapActions辅助函数将组件的methods映射为
store.dispatch调用
4.Getter
getter存放公共函数供组件调用,类似于组件中的过滤函数computed或者filters,组件中的computed和filters只能供给单个组件自己调用不能被多个组件公用,
getter不仅可以接收state也可以接收 其他的 getter 作为参数!
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。