千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Vue中的getters属性的用法详解

Vue中的getters属性的用法详解

来源:千锋教育
发布人:xqq
时间: 2023-07-26 20:54:57 1690376097

Vue中的getters属性是一种抽象的访问store中的state的方式,它提供了一种简便的方式来访问store中的数据。getters属性可以用于从store中获取状态,并以更加有意义的方式进行处理。

使用getters属性

在使用getters属性之前,我们需要先在store中定义getters属性,getters属性是一个函数,它接受state作为参数,并返回一个经过处理的状态。


// store.js
const store = new Vuex.Store({
  state: {
    count: 0
  },
  getters: {
    count(state) {
      return state.count * 2
    }
  }
})

定义完getters属性后,我们就可以在组件中使用它了,我们可以通过mapGetters辅助函数将store中定义的getters映射到当前组件的computed计算属性中:


// App.vue
import { mapGetters } from 'vuex'

export default {
  computed: {
    ...mapGetters(['count'])
  }
}

我们就可以在组件中使用count来获取state.count的值,它的值为state.count的两倍:


// App.vue
export default {
  computed: {
    ...mapGetters(['count'])
  },
  methods: {
    handleClick() {
      console.log(this.count) // 2
    }
  }
}

组合getters属性

在定义getters属性时,我们可以使用其他getters属性来处理状态,这样就可以实现复杂的状态处理:


// store.js
const store = new Vuex.Store({
  state: {
    count: 0
  },
  getters: {
    count(state) {
      return state.count * 2
    },
    doubleCount(state, getters) {
      return getters.count * 2
    }
  }
})

在上面的例子中,我们定义了一个doubleCount的getters属性,它的值是count的两倍,我们可以在组件中使用mapGetters辅助函数将doubleCount映射到当前组件的computed计算属性中:


// App.vue
import { mapGetters } from 'vuex'

export default {
  computed: {
    ...mapGetters(['doubleCount'])
  },
  methods: {
    handleClick() {
      console.log(this.doubleCount) // 4
    }
  }
}

参数传递

除了可以使用state和getters,我们还可以在定义getters属性时传入参数,这样我们就可以根据参数来过滤状态:


// store.js
const store = new Vuex.Store({
  state: {
    list: [
      { name: 'Tom', age: 18 },
      { name: 'Jack', age: 20 },
      { name: 'Bob', age: 22 }
    ]
  },
  getters: {
    getListByAge(state, age) {
      return state.list.filter(item => item.age > age)
    }
  }
})

参数传递之后,我们可以在组件中使用mapGetters辅助函数将getListByAge映射到当前组件的computed计算属性中:


// App.vue
import { mapGetters } from 'vuex'

export default {
  computed: {
    ...mapGetters(['getListByAge'])
  },
  methods: {
    handleClick() {
      console.log(this.getListByAge(20)) // [{ name: 'Bob', age: 22 }]
    }
  }
}

Vue中的getters属性是一种抽象的访问store中的state的方式,它提供了一种简便的方式来访问store中的数据。getters属性可以用于从store中获取状态,并以更加有意义的方式进行处理。我们可以使用mapGetters辅助函数将store中定义的getters映射到当前组件的computed计算属性中,就可以在组件中使用getters属性来获取状态,同时我们还可以组合getters属性,并且可以传入参数来过滤状态。

千锋教育是高品质web前端培训机构,千锋教育拥有大量实力web前端培训讲师,提供优质的web培训课程,web前端培训,欢迎报名千锋教育。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT