vuex里面的辅助函数mapState,mapGetters,mapMutations和mapActions用法
时间: 2023-08-08 08:07:03 浏览: 81
在Vuex中,我们可以使用辅助函数来简化状态管理的操作。下面是对这些辅助函数的用法的简要说明:
1. `mapState`:用于将 store 中的状态映射到组件的计算属性中。它接受一个数组或对象作为参数,数组中的元素可以是字符串或对象。如果是字符串,则表示在组件中创建一个同名的计算属性,它返回对应状态的值。如果是对象,则可以指定计算属性的名称和对应状态的名称。
2. `mapGetters`:用于将 store 中的 getters 映射到组件的计算属性中。用法与 `mapState` 类似,只是参数要传入 getters 的名称。
3. `mapMutations`:用于将 store 中的 mutations 映射到组件的方法中。它接受一个数组或对象作为参数,数组中的元素可以是字符串或对象。如果是字符串,则表示在组件中创建一个同名的方法,它调用对应的 mutation。如果是对象,则可以指定方法的名称和对应 mutation 的名称。
4. `mapActions`:用于将 store 中的 actions 映射到组件的方法中。用法与 `mapMutations` 类似,只是参数要传入 actions 的名称。
这些辅助函数可以帮助我们在组件中更方便地使用 Vuex 提供的状态管理功能,减少了重复代码的编写。
相关问题
vuex的辅助函数的使用
在Vue.js开发中,Vuex是一个非常常用的状态管理工具。为了方便开发者使用Vuex,Vuex提供了一些辅助函数,这些函数可以简化代码并提高代码的可读性和可维护性。这些辅助函数包括:
- `mapState`: 将Vuex store中的state映射到组件的computed计算属性中。
- `mapGetters`: 将Vuex store中的getters映射到组件的computed计算属性中。
- `mapMutations`: 将Vuex store中的mutations映射到组件的methods方法中。
- `mapActions`: 将Vuex store中的actions映射到组件的methods方法中。
以下是这些辅助函数的使用示例:
```js
import { mapState, mapGetters, mapMutations, mapActions } from 'vuex'
export default {
computed: {
...mapState({
count: state => state.count,
message: state => state.message
}),
...mapGetters([
'doneTodosCount',
'getTodoById'
])
},
methods: {
...mapMutations({
increment: 'INCREMENT',
decrement: 'DECREMENT'
}),
...mapActions([
'getTodos',
'updateTodo'
])
}
}
```
上面的示例中,我们使用了`mapState`将Vuex store中的`count`和`message`映射到组件的computed计算属性中;使用`mapGetters`将Vuex store中的`doneTodosCount`和`getTodoById`映射到组件的computed计算属性中;使用`mapMutations`将Vuex store中的`INCREMENT`和`DECREMENT` mutations映射到组件的methods方法中;使用`mapActions`将Vuex store中的`getTodos`和`updateTodo` actions映射到组件的methods方法中。这样,我们就可以在组件中直接使用这些映射后的计算属性和方法了。
Vuex store 辅助函数 访问state
在使用 Vuex 时,我们可以使用辅助函数来访问 store 中的 state。常用的辅助函数有:
- mapState:将 store 中的 state 映射到组件的计算属性中;
- createNamespacedHelpers:创建一个与指定命名空间相关的辅助函数集合。
下面是具体的用法:
### 1. mapState
`mapState` 函数接收一个字符串数组或对象,每个字符串对应 state 中的一个属性名,或者是一个对象,对象的键名表示在组件中使用的名称,键值表示 state 中对应的属性名。
```js
import { mapState } from 'vuex'
export default {
computed: {
...mapState([
'count' // 映射 this.count 为 store.state.count
]),
...mapState({
// 映射 this.count2 为 store.state.count
count2: 'count'
})
}
}
```
### 2. createNamespacedHelpers
`createNamespacedHelpers` 函数接收一个命名空间字符串,返回一个对象,包含了以下四个辅助函数:
- mapState:映射 state 到组件的计算属性中;
- mapGetters:映射 getters 到组件的计算属性中;
- mapMutations:映射 mutations 到组件的 methods 中;
- mapActions:映射 actions 到组件的 methods 中。
```js
import { createNamespacedHelpers } from 'vuex'
const { mapState } = createNamespacedHelpers('myModule')
export default {
computed: {
...mapState([
'count'
])
}
}
```
以上是辅助函数访问 Vuex store 中 state 的用法。