vuex中的辅助函数

了解

vuex提供了一些非常方便的辅助函数,比如mapState、mapGetter、mapMutation、mapAction。初学vuex时,并未深究以上函数,只是走马观花的看了看。

暴露问题

在使用vuex的时候,仅仅了解State、Getter、Mutation、Action、Module等概念,在使用过程中,业务功能逐渐增加,会出现很多个状态。当一个组件需要多个状态的时候,将这些状态都声明为计算属性会有些重复和冗余。

辅助函数

mapState

引入

import { mapState } from 'vuex

3种用法

  • 对象
    computed: mapState({
      // 箭头函数
      count: state => state.count,
      // 这里为了能够使用this获取局部变量localCount,必须使用常规函数
      countPlusLocalState (state) {
        return state.count + this.localCount
      }
    })
    

如果使用箭头函数,当vuex的state和当前组件的state,含有相同的变量名称时,this获取的是vuex中的变量,而不是局部变量

  • 数组
    当映射的计算属性的名称与state的子节点名称相同时,我们也可以给mapState传一个字符串数组。
computed: mapState([
  // 映射 this.count 为 store.state.count
  'count'
])
  • 对象展开运算符
    mapState函数返回的是一个对象。如果需要将它与局部计算属性混合使用,通常我们需要一个工具函数将多个对象合并为一个,以使我们可以将最终对象传给computed属性。
computed: {
    localComputed () {},
  ...mapState({})
}
也可以使用`...mapState([])`,但前提是映射的计算属性的名称与state的子节点名称相同,如果state在vuex的modules中,则不成功。
mapGetters

mapGetters将store中的getter映射到局部计算属性

computed: {
  ...mapGetters([
    'oneGetter',
    'anotherGetter'
  ])
}
mapMutations

使用mapMutations辅助函数将组件中的methods映射为store.commit调用。

methods: {
  // 将this.tips映射成 this.$store.commit('tips')
  ...mapMutations(['tips'])
}
mapAction

使用mapActions辅助函数将组件的methods映射成store.dispatch调用

methods: {
  // 将this.tips映射成 this.$store.dispatch('tips')
  ...mapActions(['tips'])
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安装 npm npm install vuex --save 在一个模块化的打包系统中,您必须显式地通过Vue.u...
    萧玄辞阅读 2,972评论 0 7
  • vuex 场景重现:一个用户在注册页面注册了手机号码,跳转到登录页面也想拿到这个手机号码,你可以通过vue的组件化...
    sunny519111阅读 8,052评论 4 111
  • Vuex 的学习记录 资料参考网址Vuex中文官网Vuex项目结构示例 -- 购物车Vuex 通俗版教程Nuxt....
    流云012阅读 1,482评论 0 7
  • Vuex是什么? Vuex 是一个专为 Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件...
    萧玄辞阅读 3,166评论 0 6
  • Vuex 是什么? ** 官方解释:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式**。它采用集中...
    Rz______阅读 2,327评论 1 10