vuex中module的命名空间概念

vuex中module的命名空间概念

  • 默认情况下,模块内部的 action、mutation 和 getter 是注册在全局命名空间的。

    • 弊端1:不同模块中有相同命名的mutations、actions时,不同模块对同一 mutation 或 action 作出响应。
    • 弊端2:当一个项目中store分了很多模块的时候,在使用辅助函数mapState、mapGetters、mapMutations、mapActions时,很难查询,引用的state、getters、mutations、actions来自于哪个模块,不便于后期维护。
  • 可以通过添加 namespaced: true 的方式使其成为带命名空间的模块。当模块被注册后,它的所有 getter、action 及 mutation 都会自动根据模块注册的路径调整命名。
    1. 在模块中添加 namespaced: true, 开始命名空间

    2. 在根store中引入模块并挂载

    3. 组件中使用模块中定义的“permissionList” state
      • 第一种方式

        // 1. 导入辅助函数mapState
        import { mapState } from "vuex";
        export default {
          props: {
            data: {
              type: Object,
              default: "chart"
            }
          },
          data() {
            return {
              list: {}
            };
          },
          computed: {
              //2. 在辅助函数mapState的第一参数上,填写上模块的命名空间名。根据挂载方式不同,此处的命名空间名就是 wechatType 或 aaa。
            ...mapState('命名空间名', ["permissionList"])
          },
      • 第二种方式
        //通过使用 createNamespacedHelpers 创建基于某个命名空间辅助函数。
        //它返回一个对象,对象里有新的绑定在给定命名空间值上的组件绑定辅助函数
        import { createNamespacedHelpers } from "vuex";
        const { mapState } = createNamespacedHelpers('命名空间名')
        export default {
          computed: {
            ...mapState(["permissionList"])
          }
        }

原文地址:https://www.cnblogs.com/guojbing/p/10852362.html

时间: 2024-10-09 03:06:13

vuex中module的命名空间概念的相关文章

如何理解php中命名空间概念

PHP中命名空间的本质是容器,可以起到封装的作用. 在这个容器中中我们可以放入变量,函数,类. php命名空间概念的理解可以类比于文件目录,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色. 上面root文件夹下包含两个子文件夹sub1和sub2,sub1和sub2就相当于两个容器,起到封装的作用,可以在两个文件下定义相同的文件sub2.php,因为他们是互不干扰的.要在sub1.php文件中引用同级目录下sub2.php中的内容,直接包含进来就行了(inclu

python 中变量的命名方法

从网上找到django中python的命名规范 Python  规范 代码的布局  编码 所有的Python脚本文件都应在文件头标上“# -*- coding:utf-8 -*-”.  缩进 4个空格一个缩进层次 空行 适当的空行有利于增加代码的可读性,加空行可以参考如下几个准则: (1) 在类.函数的定义间加空行: (2) 在import不同种类的模块间加工行: (3) 在函数中的逻辑段落间加空行,即把相关的代码紧凑写在一起,作为一个逻辑段落,段落间以空行分隔 换行        语句比较长,

Spring中Bean的命名问题及ref和idref之间的区别

一直在用Spring,其实对其了解甚少,刚去了解了一下Spring中Bean的命名问题以及ref和idref之间的区别,略作记录,以备后查. Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: <bean class="com.zyh.spring3.hello.StaticBeanFactory"></bean> 此

AngularJS中module的导入导出

关于AngularJS中module的导入导出,在Bob告诉我之前还没写过,谢谢Bob在这方面的指导,给到我案例代码. 在AngularJS实际项目中,我们可能需要把针对某个领域的各个方面放在不同的module中,然后把各个module汇总到该领域的一个文件中,再由主module调用.就是这样: 以上,app.mymodule1, app.mymodule2,app.mymodule都是针对某个领域的,比如app.mymodule1中定义directive, app.mymodule2中定义co

[JAVA][Spring]Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别

Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: <bean class="com.zyh.spring3.hello.StaticBeanFactory"></bean> 此时需要通过接口getBean(Class<T> requiredType)来获取Bean: 如果该Bean找不到则抛异常:NoSu

编程中的匈牙利命名法

匈牙利命名法,是一种编程时的命名规范.基本原则是: 变量名 = 属性+类型+对象描述 其中,每一个对象的名称都要求有明确的含义,可以取对象名称全称或名字的一部分.命名要基于容易记忆和容易理解的原则.保证名字的连贯性非常重要.常见的匈牙利命名规则如下: 例如,表单的名称为form,那么匈牙利命名法中可以简写为frm.当表单变量名称为Switchboard时,变量全称应该为frmSwitchboard.这样,可以很容易从变量名看出Switch是一个表单.同样,如果此变量类型为标签,那么就应命名为lb

(转)Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别

Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: <bean class="com.zyh.spring3.hello.StaticBeanFactory"></bean> 此时需要通过接口getBean(Class<T> requiredType)来获取Bean: 如果该Bean找不到则抛异常:NoSu

问答:如何规划CSS 中 的命名方式 如何看待 CSS 中 BEM 的命名方式?

好多盆友 很纠结 css命名规则 怎么弄,还没起步就被绊住了,那么今天蝈蝈就针对这个问题来讨论一下 没什么技术 含量,但却对效率开发至关重要的 "问题". 下文是一些知乎大神的个人经验总结,如果觉得有用请点赞 留言! JS前端实用开发QQ群 :147250970  欢迎加入~! 如何看待 CSS 中 BEM 的命名方式? BEM的意思就是块(block).元素(element).修饰符(modifier),是由Yandex团队提出的一种CSS Class 命名方法. 类似于: .blo

解决Pycharm中module &#39;pip&#39; has no attribute &#39;main&#39;的问题

景:pip升级至10.0.1后,使用Pycharm安装Package时一直提示module 'pip' has no attribute 'main'报错信息. 解决方法: 找到Pycharm安装目录C:\Works\tools\JetBrains\PyCharm 2016.3.3\helpers下面的packaging_tool.py文件, 打开后定位到如下代码: 修改为如下代码: 修改后保存,再安装新的Package时就可以成功了. 解决Pycharm中module 'pip' has no