vuex的使用方法

117 阅读1分钟

vuex:

state(数据存放)

作为一名刚入职不久的小前端,接手的项目数据采用vuex进行全局数据管理,自学了下vuex的相关知识包括state、mutations、actions定义及传参方式。 tips:vuex适用于大型的项目集中数据管理,小型项目使用可能会影响性能。

组件访问state数据的方式(访问state中的count字段):

1.this.$store .state.count

2.import {mapState} from 'vuex'

Computed:{

...mapState(['count'])

}//将全局数据映射为组件的计算属性

mutations(变更state中的数据)

1.只能通过mutations修改state中的数据

2.集中监控所有数据的变化

Mutations:{

add(state){

state.count ++

}

}

1)触发mutation的第一种方式利用commit:

Methods:{

add(){

this.$store.commit('add')

this.$store.commit('add',3)//传参数3

}

}

mutations传参数:

mutations:{

add(state,num){

state+=num

}

}

2)从vuex中导入mapMutations函数 //触发mutations中方法的第二种方式

import {mapMutations} from 'vuex'

Methods:{

...mapMutation(['add'])

add(){

this.sub(3)//传入参数3

}

}

actions//处理异步任务

异步操作变更state中的数据,必须使用actions

1)actions触发方式

//定义actions

Actions:{

//在actions中,不能直接修改state中的数据只能通过commit触发 mutation中的方法来完成数据修改。

change(context){

setTimeout(()=>{

context.commit('add')

},1000)

}

}

//触发actions

Methods:{

handle(){

this.$store.dispatch('change') //触发action第一种方式

}

}

2)第二种触发方式 导入mapActions

import {mapActions }from 'vuex'

Methods:{

...mapMutations(['change'])//将mutations中的方法映射到组件计算属性

...mapActions('change')//将actions中的异步方法映射到组件~

change(){

this.change(3)//直接调actions中的异步方法

}

}