壁纸小家让前端飞

(VUEX)mapState辅助函数

2019-06-24  本文已影响0人  玩点小技术

在vue组件中我相信大家都是知道如何简单的获取到Vuex的状态并且展示它。

第一种方式:
因为Vuex的状态存储是响应式的,从store实例中读取状态最简单的方法是读取计算属性

computed: {
  count () {
    return store.state.count
  }
},

每当 store.state.count变化的时候, 都会重新求取计算属性,并且触发更新相关联的 DOM。
但这种方法有个缺点就是:依赖全局状态单例,在每个需要使用 state 的组件中需要频繁地导入,并且在测试组件时需要模拟状态。

第二种方式:通过store选项,提供一种机制将状态从根组件"注入"到每个子组件中,这个就需要用Vue.use(Vuex),然后在各个需要用state的组件中通过this.$store 访问到:

computed: {
  count () {
    return this.$store.state.count
  }
},

第三种方式:mapState辅助函数重点

有时候可以能会遇到一个组件里会用到多个state的状态,如果还是用上面的声明计算属性的方式就会有些重复和冗余了,为了解决这个问题VUEX也提供了mapState辅助函数帮助我们生成计算属性,让你少写重复代码:
首先一点在需要的组件里引入vuex,并且是指定"mapState "

import { mapState } from 'vuex'
computed:{
 ...mapState(['count','name'])
},

...mapStatey一定也是写在computed里才有效大家千万要记住了

下面列出对比前面的方式:

computed: {
  count () {
    return this.$store.state.count
  },
  name () {
    return this.$store.state.name
  }
},
computed:{
  ...mapState(['count','name'])
},
上一篇下一篇

猜你喜欢

热点阅读