返回
Vuex 神奇的辅助函数 getters,mapGetters,...mapGetters详解
前端
2023-10-08 02:29:28
前言
Vuex 是一个状态管理工具,用于在 Vue.js 应用程序中集中管理和共享状态。在使用 Vuex 时,我们可能会遇到需要在多个组件中使用相同状态的情况。为了避免在每个组件中都定义相同的代码,我们可以使用 Vuex 的辅助函数 getters 和 mapGetters 来简化代码并提高可复用性。
Getters
Getters 是从 Vuex 的 state 中派生出一些新的状态的方法。我们可以通过在 store 的 options 对象中定义 getters 来创建 getters。例如:
const store = new Vuex.Store({
state: {
count: 0
},
getters: {
doubleCount: state => {
return state.count * 2
}
}
})
现在,我们可以在组件中使用 doubleCount
getter 来访问派生出的新状态:
<template>
<div>
Count: {{ doubleCount }}
</div>
</template>
<script>
export default {
computed: {
doubleCount() {
return this.$store.getters.doubleCount
}
}
}
</script>
MapGetters
mapGetters
是一个辅助函数,可以帮助我们在组件中更轻松地使用 getters。我们可以通过在组件的 computed
选项中使用 mapGetters
来实现这一目的。例如:
<template>
<div>
Count: {{ count }}
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters(['count'])
}
}
</script>
使用 mapGetters
后,我们可以在组件中直接使用 count
getter,而无需显式调用 this.$store.getters.count
。
使用场景
- 当我们需要在多个组件中使用相同的状态时,我们可以使用 getters 和 mapGetters 来简化代码并提高可复用性。
- 当我们需要从 Vuex 的 state 中派生出一些新的状态时,我们可以使用 getters 来实现这一目的。
- 当我们需要在组件中更轻松地使用 getters 时,我们可以使用 mapGetters 来实现这一目的。
总结
Getters、mapGetters 和 mapState 是 Vuex 提供的辅助函数,可以帮助我们在组件中更轻松地访问和管理状态。通过使用这些辅助函数,我们可以提高代码的可复用性、可读性和可维护性。