2025年Vuex中的mutaion,action

Vuex中的mutaion,actionMutation 用于变更 Store 中的数据 提交更新数据的方法 必须是同步的 如果需要异步使用 action 1 只能通过 mutation 变更 store 数据 不可以直接操作 Store 中的数据 2 通过这个方式虽然操作起来稍微繁琐一些 但是可以集中监听所有数据的变化 注意 里面不要执行异步操作 定义 mutation const store new

大家好,我是讯享网,很高兴认识大家。

Mutation用于变更Store中的数据

提交更新数据的方法,必须是同步的(如果需要异步使用action)

1.只能通过mutation变更store数据,不可以直接操作Store中的数据

2.通过这个方式虽然操作起来稍微繁琐一些,但是可以集中监听所有数据的变化

注意:里面不要执行异步操作

//定义mutation const store = new Vuex.Store({ 
    state:{ 
    count:0 }, mutations:{ 
    //第一个参数是state对象 add(state){ 
    //变更状态 state.count++ } } }) 

讯享网

第一种触发:

讯享网//触发mutation methods:{ 
    aa(){ 
    //add是mutation里面的方法 this.$store.commit('add') } } 

可以在触发mutation时传递参数

//定义mutation const store = new Vuex.Store({ 
    state:{ 
    count:0 }, mutations:{ 
    //第一个参数是state对象 //va自定义的参数  add(state,va){ 
    //变更状态 state.count += va } } }) 
讯享网//触发mutation methods:{ 
    aa(){ 
    //add是mutation里面的方法 //携带参数 2 this.$store.commit('add',2) } } 

第二种触发:
1.从 vuex中按需导入mapMutations 函数
import {mapMutations} from 'vuex’
2. 将制定的mutations函数,映射为当前组件的methods函数中


讯享网

methods:{ 
    ...mapMutations(['add','ooo']) } 

commit:用来触发mutation里面方法用的
this.$store.commit(‘mutations方法名’,值)

action

和mutation功能大致相同,不同之处在与action提交的是mutation,而不是直接变更状态,可以包含异步操作

用于处理异步任务

如果通过异步操作变更数据,必须通过action,而不能使用mutation,但是在action中还是要通过触发mutation的方式间接变更数据

讯享网//定义action const store = new Vuex.Store({ 
    state:{ 
    count:0 }, mutations:{ 
    add(state){ 
    state.count++ } }, actions:{ 
    //第一个参数是context addAsync(context){ 
    setTimeout(()=>{ 
    context.commit('add') },1000) } } }) 

触发action
1.从 vuex中按需导入mapActions 函数
import {mapActions} from ‘vuex’
2. 将制定的mapActions函数,映射为当前组件的methods函数中

methods:{ 
    ...mapAction(['addAsync']) } 

dispatch:用来触发action里面的方法

讯享网//定义action const store = new Vuex.Store({ 
    state:{ 
    count:0 }, mutations:{ 
    add(state,num){ 
    state.count+=num } }, actions:{ 
    //第一个参数是context addAsync(context,num){ 
    setTimeout(()=>{ 
    context.commit('add',num) },1000) } } }) 
methods:{ 
    abc(){ 
    //addAsynce 是actions里面的方法 //this.$store.dispatch('addAsynce',值) this.$store.dispatch('addAsynce',4) } } 

下一章详细讲解Getter,Modules,感谢观看

小讯
上一篇 2025-01-27 15:08
下一篇 2025-03-29 18:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/55618.html