vuex是一个状态管理工具
流程:
- 页面dispatch一个action,然后触发mutations的commit修改状态,state响应到视图上。
解密actions的形参:
解密mutations的形参:接收state可以直接进行修改state.count = 0
辅助函数
computed:mapState(['count']) // mapState返回一个对象如下
computed:{
count (){
return this.$store.state.count
}
}
=============
// 简写方式
computed:{
...mapState(['count']), // 可以直接结构出来
...mapGetters(['count']) // vuex中的计算属性,mapGetters传参需要定义两层函数
}
=========
// 如果做二次运算
computed:{
...mapState({
count(state){
// 形参是state,可以做一些操作
}
})
}
面试小题:
- 是否可以直接修改state状态:可以,若将vue创建 store 的时候传入 strict: true, 开启严格模式,那么任何修改state的操作,只要不经过mutation的函数,vue就会 throw error : [vuex] Do not mutate vuex store state outside mutation handlers。在vuex中也是无法保存记录的
- mutation 中是否可以做异步操作:可以,但是vuex中只记录mutation的同步操作,异步无法记录到所以建议把异步放到action中