vue vuex 挂载_Vue之Vuex使用

上篇已经简单介绍了vuex的部署~这篇就讲下Vuex的简单使用吧

store已经挂载在App Vue根组件~因此就可以像在组件中使用router一样使用store:

获取state中某个属性:this.$store.state.name (name为所需的属性key)

执行一个commit(mutations中的方法):this.$store.commit('name') mutations中所定义的名字

执行一个dispatch(就是action中的方法):this.$stotre.dispatch('name') action中所定义的名字

执行一个getter:this.$store.getter.name,类似于state,主要做的是一些数据格式化处理~

在项目中的使用也就是如下啦~~

state一般都会写在computed属性中啦~,getter就相当于一个vuex的computed

computed:{

loading(){

return this.$store.state.loadingStatus

}

},

created() {

this.$stroe.commit('SET_BTNSTYLESBG')

this.$store.dispatch('getBookId')

}

getter的用法也是类似的了~

但是在一些组件中需要引入很多的state状态值以及共享数据,甚至一些commit操作的时候,感觉太麻烦了!~有没有一些简单便捷的方法?

答案是当然有的啦~辅助函数!vuex官方文档有写 ~极大程度的提高了开发效率~

state,getter,mutatios,actions每一个都有一个相应的辅助函数~下面就详细说上一说

一般有两种方法

import { mapState, mapMutations, mapGetters,mapAction } from ‘vuex’

或者 import * as types from ‘vuex’

第二种是我喜欢的风格~简单看着舒服~不过第一种看着更加直接一些!

需要写的位置依旧不变~只是使用方法稍加变化~!

computed: ...typesState(['name', 'userInfo'])

//getter的使用跟上面state的一样~

created() {

this.name //就是state中的那么属性值!

}

在Vuex有说道,所有正常的状态改变都必须通过commit来进行提交!(所以不要妄图去直接修改state中的属性~这样也许在非严格模式下是可以的~但是一旦出了问题,脑壳儿疼的,因为你会找不到你在哪里做了操作!)

methods:{

/*这里就是mutation与action放的位置了*/

...types.mapMutations(['a', ''b])

...types.mapAction(['c', 'd'])

上述写法也可以修改为一下形式:

...types.mapMutations({

'commitA': 'a'

'commitB': 'b'

})

...types.mapAction({

'actoinC': 'c',

'actionD':'d'

})

}

这种写法相当于将commitA 映射为a,actionC映射为c,使用是可以直接进行替换~

mounted: {

/*data就是commit时候所提交的数据,这是使用我们在methods中引入的action,mutation方法了*/

this.a(data) ------------------------------- this.commitA(data)

this.c(data) ------------------------------- tihs.actionC(data)

}

是不是瞬间觉得简单了很多呢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值