搜索
简帛阁>技术文章>vue学习篇-11vuex mutations同步 actions异步原因

vue学习篇-11vuex mutations同步 actions异步原因

  • 在组件只能可以通过this.$store.state访问到状态,为什么不能在组件中直接修改state?
    为了保证数据是单向流动的,只能在store中操作数据,而组件只能够使用状态,不能修改,

    所以mutations中必须是同步操作,而在actions中可以有异步操作,
    mutations才能操作state,如果actions中能操作state的话,数据会变得难以管理

    mutations中的数据变化是可以被vue的开发工具vue-devTools观测到。 actions中的数据变化是不可以被vue的开发工具vue-devTools观测到。
    所以需要在mutations中做操作。

  • 什么时候应用vuex:

    多个组件共享数据,中大型项目,

vuex以模块使用

设置命名空间为true,即namespaced:true 可以让模块下的getters和index.js 中的getters区分开

vuex中的store分模块管理,需要在store的index.js中引入各个模块,为了解决不同模块命名冲突的问题,将不同模块的namespaced:true,之后在不同页面中引入getter、actions、mutations时,需要加上所属的模块名

模块没有设置命名空间的getters访问方式

// ...mapGetters(['nameLength', 'count'])
// ...mapGetters({<!-- -->
//     len: 'nameLength',
//     num: 'count'
// })

给模块设置命名空间的访问方式
...mapGetters({<!-- -->
    len: 'nameLength',
    num: 'cart/count'
})

模块没有设置命名空间的mutations访问方式

// 触发store root的mutations事件 和 模块中的mutations 都会触发
// this.$store.commit('setLon', value);

// 触发设置了命名空间模块的mutations事件
this.$store.commit('address/setLon', value);
this.$store.commit('address/setLat', value);

模块没有设置命名空间的actions访问方式:和mutations一样

文章目录vuex以模块使用模块没有设置命名空间的getters访问方式模块没有设置命名空间的mutations访问方式模块没有设置命名空间的actions访问方式:和mutations一样在组件只能可
执行vuex中的函数,有两种方法:1commit,例如this$storecommit(GETMODULESELECTLIST);//mutations中的方法2dispatch,例如this$sto
storejs里面添加如下的代码就可以了://热重载if(modulehot){//指定要监控的文件modulehotaccept(['/mutations'],()>{constmutati
区分actionsmutations并不是为了解决竞态问题,而是为了能用devtools追踪状态变化。事实上在vuex里面actions只是一个架构性的概念,并不是必须的,说到底只是一个函数,你在
Vuex解决不同组件的数据共享,与数据持久化1npminstallvuexsave2新建storejs并引入vuevuex,Vueuse(Vuex)3state在vuex中用于存储数据varstat
1、Statethis$storestatecount不要直接改变state,通过提交mutation的方式,而非直接改变storestatecount2、mutatioinsthis$storec
Action类似于mutation,不同在于:Action提交的是mutation,而不是直接变更状态Action异步的,mutation是同步的。沿用vuex学习简介的案例:这里是加10减11在s
actions异步修改状态与mutations同步修改状态是两个容易混淆的概念,因为两者在执行上,很难测试出两者的差别,而我们要区别它们两,首先你得区分同步异步,我的理解是,同步更像是一条流水线作业
mutations状态更改在mutations对象中创建更改state状态的方法。mapMutations是vuex提供的辅助函数在storejs中importVuefrom'vue'importV
Vuex中store数据改变的唯一方法就是提交mutationsmutations里面装着一些改变数据方法的集合,这是Vuex设计很重要的一点,就是把处理数据逻辑方法全部放在mutations