• 技术文章 >web前端 >Vue.js

    聊聊vuex如何模块化编码+命名空间

    青灯夜游青灯夜游2023-02-08 19:47:32转载352

    vuex如何模块化编码+命名空间?下面本篇文章就来简单了解一下,希望对大家有所帮助!

    模块化编码+命名空间

    小a:“为啥要开启这个捏?”山鱼:“当然是让代码更好维护,让多种数据分类更加明确。”

    小a:“那如何才能做到模块化编码+命名空间呢”

    山鱼:“只需要这样即可”

    namespaced: true

    将Count组件和Person组件里面的东西全部放到store里面

    // Count的相关配置
    export default {
        namespaced: true,
        actions: {
            // 奇数加法
            jiaodd(context, value) {
                if (context.state.sum % 2) {
                    context.commit('JIA', value)
                }
            },
            // 延迟加
            jiaWait(context, value) {
                setTimeout(() => {
                    context.commit("JIA", value)
                }, 500);
            },
        },
        mutations: {
            JIA(state, value) {
                state.sum += value
            },
            JIAN(state, value) {
                state.sum -= value
            },
        },
        state: {
            sum: 0, // 当前和
            school: '山鱼小学',
            subject: '前端',
        },
        getters: {
            bigSum(state) {
                return state.sum * 10
            }
        }
    }

    2.开启命名空间后读取state的数据

      computed: {
         // 自己读取
        personList() {
          returnthis.$store.state.personAbout.personList;
        },
        sum() {
          returnthis.$store.state.countAbout.sum;
        },
      },
      // 借助mapState读取
    computed: {
        ...mapState("countAbout", ["sum", "subject", "school"]), 
        ...mapState("personAbout", ["personList"]) 
      },

    3.开启命名空间后,组件中读取getters数据

      computed: {
          // 自己读取
        firstName() {
          returnthis.$store.getters["personAbout/firstPersonName"];
        }
      },
      methods: {
        // 借助mapGetters读取
        // 借助mapMutations生成对应的方法,方法种会调用相应的commit去联系mutations
        ...mapMutations('countAbout',{ increment: "JIA", decrement: "JIAN" }), // 对象式
    
        ...mapActions('countAbout',{ incrementOdd: "jiaodd", incrementWait: "jiaWait" }) //对象式
    
      },

    4.开启命名空间后,组件中调用dispatch

    methods: {
         // 直接dispath
        addWang() {
          constpersonObj= { id: nanoid(), name: this.name };
          this.$store.dispatch("personAbout/addNameWang", personObj);
          this.name="";
        },
      },
    //借助mapGetters读取:
      computed: {
        ...mapGetters('countAbout',['bigSum'])
      },

    5.开启命名空间后,组件中调用commit

    methods: {
        // 直接调用
        add() {
          constpersonObj= { id: nanoid(), name: this.name };
          this.$store.commit("personAbout/ADD_PERSON", personObj);
          this.name="";
        },
     }
      methods: {
        // 借助mapMutations生成对应的方法,方法种会调用相应的commit去联系mutations
        ...mapMutations('countAbout',{ increment: "JIA", decrement: "JIAN" }), // 对象式
          },
      }
    只能说模块化很香,代码更清晰数据更分明,后期维护也很niue

    (学习视频分享:vuejs入门教程编程基础视频

    以上就是聊聊vuex如何模块化编码+命名空间的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:VueX javascript Vue
    上一篇:浅析集中式状态管理Vuex的使用方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Vuex状态管理之Mutation的使用详解• Vuex Module-状态仓库分割的使用介绍• 什么是状态管理?聊聊怎么利用Vuex进行状态管理• 一文带你彻底搞懂Vuex• 聊聊Vuex与Pinia在设计与实现上的区别• 浅析集中式状态管理Vuex的使用方法
    1/1

    PHP中文网