vuex使用createNamespacedHelpers不生效(一定要与namespaced一块使用)

简介: 这篇文章讨论了在使用Vuex的`createNamespacedHelpers`时,如何正确地与模块命名空间结合使用,以避免出现不生效的问题。

createNamespacedHelpers

创建基于命名空间的组件绑定辅助函数。其返回一个包含 mapState、mapGetters、mapActions 和 mapMutations 的对象。它们都已经绑定在了给定的命名空间上。

长时间没用,忘了它和命名空间有联系了,特此再记录下。

dataBulletin.js

//  1 地市权限
//  2 省份权限
const cityStatus = 1
const dataBulletin = {
   
  namespaced: true,
  state: {
   
    currentRoleStatus: 222 || cityStatus,
  },

  mutations: {
   
    CHANGE_currentRoleStatus: (state, flag) => {
   
      console.log(flag, 'flagflagflagflagflagflagflag')
      state.currentRoleStatus = flag
    },
  },
  getter: {
   
    getCurrentRoleStatusFun(state) {
   
      return state.currentRoleStatus
    },
  },
}

export default dataBulletin

index.js

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

import app from './modules/app'
import user from './modules/user'
import org from './modules/org'
import dataBulletin from './modules/dataBulletin'

// default router permission control
import permission from './modules/permission'

// dynamic router permission control (Experimental)
// import permission from './modules/async-router'
import getters from './getters'

Vue.use(Vuex)

export default new Vuex.Store({
   
  modules: {
   
    app,
    user,
    org,
    permission,
    dataBulletin,
  },
  state: {
   },
  mutations: {
   },
  actions: {
   },
  getters,
})

使用:

import {
    createNamespacedHelpers } from 'vuex'
const {
    mapState, mapMutations} = createNamespacedHelpers('dataBulletin')

conputed:

  computed: {
   
    ...mapState({
   
      currentRoleStatus: (state) => {
   
        console.log(state, 'statestatestate')
        return state.currentRoleStatus
      },
    }),
 }

methods:

    ...mapMutations(['CHANGE_currentRoleStatus']),

官方文档链接:https://vuex.vuejs.org/zh/api/#createnamespacedhelpers

目录
相关文章
|
前端开发 JavaScript BI
轻松搞定vue3+Pinia-2-修改state-patch-actions
轻松搞定vue3+Pinia-2-修改state-patch-actions
259 0
|
8月前
|
JavaScript
Vue报错\page\ComplianceTraceReport\index.vue{ parser: “babylon“ } is deprecated; we now treat it 怎么解决?
Vue报错\page\ComplianceTraceReport\index.vue{ parser: “babylon“ } is deprecated; we now treat it 怎么解决?
|
JavaScript 前端开发
面试题-TS(九):什么是命名空间(namespaces)?
命名空间是一种逻辑上的分组机制,它将相关的代码组织在一起,形成一个独立的作用域。在TypeScript中,命名空间通过关键字`namespace`来定义,它可以包含类、接口、函数、变量等各种类型的代码。命名空间允许我们将代码模块化,避免全局命名冲突,提高代码的可维护性和可读性。
|
8月前
|
存储 JavaScript
深入理解 Vuex 中的this.$store.dispatch方法
深入理解 Vuex 中的this.$store.dispatch方法
深入理解 Vuex 中的this.$store.dispatch方法
|
JavaScript
Vue中遇到的Bug( Component name “School“ should always be multi-word vue/multi-word-component-names)
Vue中遇到的Bug( Component name “School“ should always be multi-word vue/multi-word-component-names)
137 0
|
JavaScript 前端开发
【Vue异常】Vue报错“Trailing spaces not allowed”
【Vue异常】Vue报错“Trailing spaces not allowed”
253 0
|
JavaScript
学习TypeScript16(namespace命名空间)
TypeScript与ECMAScript 2015一样,任何包含顶级import或者export的文件都被当成一个模块。相反地,如果一个文件不带有顶级的import或者export声明,那么它的内容被视为全局可见的(因此对模块也是可见的)
130 0
学习TypeScript16(namespace命名空间)
react+hook+ts项目总结-ts中namespace命名空间
react+hook+ts项目总结-ts中namespace命名空间
126 0
|
JavaScript
在Redux中使用useSelector和useDispatch
在redux中使用useSelector和useDispacth来获取数据
138 0