回首Vue3之状态管理篇(十一)

167 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

在我们创建好Store实例后,我们在组件中应该怎么使用它呢,我们除了通过$store来获取,还可以通过辅助函数使用,所以这篇来讲讲Store的辅助函数。

辅助函数

mapState

为组件创建计算属性以返回 Vuex store 中的状态。也就是获取state状态,那是因为当一个组件需要获取多个状态的时候,将这些状态都声明为计算属性会有些重复和冗余,使用如下:

// 在单独构建的版本中辅助函数为 Vuex.mapState
import { mapState } from 'vuex'

export default {
  // ...
  computed: mapState({
    // 箭头函数可使代码更简练
    count: state => state.count,

    // 传字符串参数 'count' 等同于 `state => state.count`
    countAlias: 'count',

    // 为了能够使用 `this` 获取局部状态,必须使用常规函数
    countPlusLocalState (state) {
      return state.count + this.localCount
    }
  })
}

调用时,也可以使用对象展开运算符,如下:

export default {
  // ...
  computed: {
      ...mapState({})
  }
}

mapGetters

为组件创建计算属性以返回 getter 的返回值。

import { mapGetters } from 'vuex'

export default {
  // ...
  computed: {
  // 使用对象展开运算符将 getter 混入 computed 对象中
    ...mapGetters([
      'doneTodosCount',
      'anotherGetter',
      // ...
    ])
  }
}

我们需要注意的是:mapGetters 辅助函数仅仅是将 store 中的 getter 映射到局部计算属性。

总结

这里建议使用对象展开运算符(即 ...)的形式来使用mapStatemapGetters,这样方便我们的阅读和维护。

想了解更多文章,传送门已开启:回首Vue3目录篇