vuex modules 命名空间 mapaction 数组用法
在 Vuex 中,当我们使用模块时,可以通过添加`namespaced: true`参数来创建带命名空间的模块。这样可以避免不同模块中相同名字的 mutations、actions 和 getters 对同一对象产生影响,同时也便于后期的维护。
在创建带命名空间的模块时,我们需要在模块内部声明 state、getters、mutations 和 actions,并且这些声明都需要使用`namespaced: true`参数进行注册。例如:
```javascript
import Vue from "vue"
javascript全局数组 import Vuex from "vuex"
export default {
namespaced: true,
state: {
message: "Hello Vuex!"
},
getters: {
message: state => ssage
},
mutations: {
setMessage (state, message) {
ssage = message
}
},
actions: {
sendMessage ({ state, commit }) {
commit("setMessage", "Hello Vuex!")
}
}
}
```
在上述代码中,我们定义了一个名为`namespaced`的模块,并在其中声明了`state`、`getters`、`mutations`和`actions`。其中,`state`和`getters`是在当前模块中声明的,而`mutations`和`actions`则是在全局命名空间中声明的。
当我们需要在模块内部执行 mutations 或 actions 时,可以使用`mapMutations`或`mapActions`函数来将它们映射到模块的命名空间中。例如:
```javascript
import { map Mutations, map Actions } from "vuex"
export default {
namespaced: true,
mapMutations (state) {
return {
setMessage: (state, message) => {
ssage = message
}
}
},
mapActions (state) {
return {
sendMessage: ({ state, commit }) => {
commit("setMessage", "Hello Vuex!")
}
}
}
}
```
在上述代码中,我们通过`mapMutations`和`mapActions`函数将`setMessage`mutation 和`sendMessage`action 映射到了模块的命名空间中。这样,当我们在组件中使用这些命名空间时,就可以通过`mapState`函数来获取这些命名空间中声明的 state,例如:
```javascript
import { mapState } from "vuex"
export default {
na "MyComponent",
mapState () {
return {
message: this.$ssage
}
},
mounted () {
console.log(this.$ssage)
}
}
```
在上述代码中,我们使用`mapState`函数来获取当前组件所关联的 store 中的 state,并将其存储在`message`属性中。
另外,我们还可以使用`createNamespacedHelpers`函数来创建基于某个命名空间的辅助函数。这些辅助函数可以方便地在组件中使用命名空间中的 state、getters、mutations 和 actions。例如:
```javascript
import { createNamespacedHelpers } from "vuex"
const mapState = createNamespacedHelpers("namespaced")
const map mutations = createNamespacedHelpers("namespaced")
const map actions = createNamespacedHelpers("namespaced")
```
在上述代码中,我们使用`createNamespacedHelpers`函数来创建了基于`namespaced`命名空间的辅助函数。这些辅助函数可以帮助我们更方便地在组件中使用命名空间中的 state、getters、mutations 和 actions。
总的来说,通过使用`namespaced`参数和`mapMutations`/`mapActions`函数,我们可以方便地在 Vuex 模块中使用命名空间,并且在组件中更方便地获取和使用 store 中的 state、getters、mutations 和 actions。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论