⚜️Vuex---命名空间

引言

之前一个项目中,数据交互全部放在Vuex的action中,当时产生过一个质疑,所有的action都是挂在全局上,如果有重名的action,会产生什么样的结果?


image.png

为了避免产生重名的action或者mutation,可以使用Vuex的命名空间(awesome 😂)


image.png

一、store中设置开启命名空间

export default {
  namespaced: true, // 开启命名空间
  state: { yourState: '' // 下文会使用},
  mutations: {},
  actions: {}
}

二、挂载store时设置命名空间名

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

import anyStore from './modules/anyStore'

const store = new Vuex.Store({
  modules: {
    // 挂载:挂载方式共有两种
    anyStore, // 命名空间名为 anyStore
    namespace: anyStore // 命名空间名为 namespace
  }
})

export default store

三、组件中使用

  1. 第一种使用方式
// 导入辅助函数 mapXXX
// 以mapState 为例

import { mapState } from 'vuex'
export default {
  computed: {
    ...mapState('命名空间名称', ['yourState'])
  }
}
  1. 第二种使用方式
// 借助vuex 提供的 createNamespacedHelpers 函数
// 返回绑定在命名空间名称内部的辅助函数, 做了一次过滤

import { createNamespacedHelpers } from 'vuex'
import { mapState } = createNamespacedHelpers('命名空间名称')

export default {
  computed: {
    ...mapState(['yourState'])
  }
}
bye bye

原文地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容