假如用王者荣耀的方式学习Vuex
![](https://filescdn.proginn.com/176f6a9d821b3bb2bf1a57c0deeb12c8/e96066e7ea58fa5938a30c5fecc5a8c5.webp)
维佑 · 爱克斯
姓名:维佑·爱克斯(vuex)
热度排名:T0
胜率:95%
登场率:90%(中大型项目100%)
Ban率:0%
01 Status(单一状态树)
![](https://filescdn.proginn.com/4849b8caef2b01aed0c966ee1997898b/98b7a1195d143b4620960e9577d0a71a.webp)
02 Getter(计算属性)
![](https://filescdn.proginn.com/bbb894c03a625ae82cda9358e3bc83e8/ee94a3ca767ca2e4c50b9e5b6a997c94.webp)
03 Mutation(出尔反尔)
![](https://filescdn.proginn.com/f5c648e94892d65c551fd386b4bb84f2/109ed2b9923b983c9fb8180f10e0620d.webp)
04 Action(异步操作)
![](https://filescdn.proginn.com/d79426ef6babb78ca143e7f7fe3bbe71/2af5882ffd3d90ac02188bc73eb21243.webp)
05 Module(多重影分身)
![](https://filescdn.proginn.com/c02ee952f10ce98ed2b2117b68d23923/ac25afe10a29036abaf9c824b189b267.webp)
01 mapState
![](https://filescdn.proginn.com/3f73171f168fe34f8e6d10740296bc4c/2165be1abbcf301907bb49a50a75099f.webp)
箭头函数返回
count: state => state.count
countAlias 传递字符串参数
countAlias: 'count'
传入数组
computed: mapState([// 映射 this.count 为 store.state.count 'count' ])
02 mapMutation
![](https://filescdn.proginn.com/7d805932d716c74bad3eb580129556b9/c388fce7dcab043762ac780fb2484e27.webp)
methods:{
...mapMutations([
'increment', // 将 `this.increment()` 映射为 `this.$store.commit('increment')`
]),
}
03 mapActions
![](https://filescdn.proginn.com/5eeba14d584a5ab276bd81c20547ea3e/abe585516bca8b5eb8b466d4db8ac7ec.webp)
methods: {
...mapActions([
'increment', // 将 `this.increment()` 映射为 `this.$store.dispatch('increment')`
// `mapActions` 也支持载荷:
'incrementBy' // 将 `this.incrementBy(amount)` 映射为 `this.$store.dispatch('incrementBy', amount)`
]),
...mapActions({
add: 'increment' // 将 `this.add()` 映射为 `this.$store.dispatch('increment')`
})
}
04 dispatch
![](https://filescdn.proginn.com/5ccd368f2d01ad696fa2b353b81b1784/8618852f04d91812e0b92f4bb3ef5975.webp)
store.dispatch('increment')
05 commit
![](https://filescdn.proginn.com/3f7982cb8dfdc9d5120bdd15e4e0c81a/f3b526224d9bfa088ac4f23ba20f62e7.webp)
store.commit('increment')
爱克斯的个人原则
应用层级的状态应该集中到单个 store 对象中。 提交 mutation 是更改状态的唯一方法,并且这个过程是同步的。 异步逻辑都应该封装到 action 里面。
爱克斯如何处理表单
:value="message" @input="updateMessage">
methods: {
updateMessage (e) {
this.$store.commit('updateMessage', e.target.value)
}
}
2. 使用 computed 计算属性的 get 和 set 方法做对应处理、
<input v-model="message">
computed: {
message: {
get () {
return this.$store.state.obj.message
},
set (value) {
this.$store.commit('updateMessage', value)
}
}
}
扫码关注公众号,订阅更多精彩内容。
![](https://filescdn.proginn.com/afb079eb0a29cec7d83fa66b896500a2/cb7692b9b6d23d5796ec67bc0b61ea72.webp)
评论