mapgetters和mapstate区别
时间: 2023-05-31 08:19:59 浏览: 958
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
### 回答1:
mapGetters和mapState都是Vuex中的辅助函数,用于简化组件中对state和getter的访问。
mapGetters用于将getter映射到组件的计算属性中,使得组件可以直接访问getter,而不需要通过this.$store.getters来获取。mapGetters的使用方式为:
```
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'getter1',
'getter2'
])
}
}
```
mapState用于将state映射到组件的计算属性中,使得组件可以直接访问state,而不需要通过this.$store.state来获取。mapState的使用方式为:
```
import { mapState } from 'vuex'
export default {
computed: {
...mapState([
'state1',
'state2'
])
}
}
```
总的来说,mapGetters用于简化组件中对getter的访问,而mapState用于简化组件中对state的访问。
### 回答2:
在 Vuex 中,mapGetters 和 mapState 都是用于简化组件中使用 Vuex 的方式。然而,它们在使用和作用上有一些区别。
首先,mapGetters 用于获取 Vuex store 中的 getter。这类似于组件中的 computed property。它返回一个对象,该对象的 key 是 getter 名称,value 是一个函数,该函数可以直接调用 getter。
例如,假设我们有一个名为 count 的 getter,我们可以使用 mapGetters 来获取它:
```
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'count'
])
}
}
```
这样,我们就可以在组件中直接使用 this.count 来获取该 getter 的返回值。
而 mapState 则用于获取 Vuex store 中的 state。这类似于组价中的 data property。mapState 同样返回一个对象,该对象的 key 是 state 的属性名,value 是一个函数,该函数返回该属性的值。
例如,假设我们 store 中有如下 state:
```
state: {
count: 0
}
```
我们可以使用 mapState 来获取其 count 属性:
```
import { mapState } from 'vuex'
export default {
computed: {
...mapState([
'count'
])
}
}
```
这样,我们就可以在组件中直接使用 this.count 来获取该 state 的值。
需要注意的是,mapGetters 和 mapState 都可以通过传递一个数组来获取多个 getter 或 state。此外,在 Vuex 中,getter 与 state 的作用是有区别的:getter 是用于返回计算属性的值,而 state 是用于保存组件中需要的状态数据。我们应该根据当前的需求,合理使用它们。
### 回答3:
在Vuex中,mapgetters和mapstate都是用来简化Vuex模块中的state和getters的使用的方法。它们的主要区别在于映射的对象不同。
mapstate用于映射Vuex中的state,可以将Vuex中的state属性映射到组件的计算属性中,这样可以方便地获取state的值。使用mapstate的组件可以直接使用this.xxx访问到state中的属性,而不需要通过this.$store.state.xxx来访问。
mapgetters用于映射Vuex中的getters,可以将Vuex中的getters映射到组件的计算属性中,这样可以方便地获取getters的值。使用mapgetters的组件可以直接使用this.xxx访问到getters中的属性,而不需要通过this.$store.getters.xxx来访问。
在使用上,mapstate和mapgetters的使用方法基本相同,都是通过数组或对象的形式来映射,但是数组中的元素表示的是Vuex中的state或getters的属性名,而对象中的属性名表示的是组件中要生成的计算属性的名称,属性值表示的是Vuex中的state或getters的属性名。
总之,mapstate和mapgetters都是用来简化Vuex模块中的state和getters的使用的方法,他们主要的区别在于映射的对象不同,一个映射state,一个映射getters,通过使用它们,可以更加方便地获取和操作Vuex中的state和getters。
阅读全文