iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >vuex中的Modules怎么使用
  • 710
分享到

vuex中的Modules怎么使用

2023-06-30 04:06:37 710人浏览 安东尼
摘要

这篇文章主要介绍了Vuex中的Modules怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vuex中的Modules怎么使用文章都会有所收获,下面我们一起来看看吧。1 、什么是模块ModulesVuex

这篇文章主要介绍了Vuex中的Modules怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vuex中的Modules怎么使用文章都会有所收获,下面我们一起来看看吧。

    1 、什么是模块Modules

    Vuex允许我们将store分割成模块(Module), 而每个模块拥有自己的state、getters、mutation、action等,甚至是嵌套子模块——从上至下进行同样方式的分割。

    const moduleA = {        state: () => ({ ... }),        mutations: { ... },        actions: { ... },        getters: { ... }    }    const moduleB = {        state: () => ({ ... }),        mutations: { ... },        actions: { ... }    }    const store = new Vuex.Store({        modules: {            a: moduleA,            b: moduleB        }    })    this.store.state.a // -> 获得moduleA 的状态    this.store.state.b // -> 获得moduleB 的状态

    内部state,模块内部的state是局部的,也就是模块私有的,

    内部getter,mutation,action 仍然注册在全局命名空间内,这样使得多个模块能够对同一 mutation 或 action 作出响应。

    2、模块内部参数问题

    对于模块内部的 mutation 和 getter,接收的第一个参数是模块的局部状态对象 state。

    对于模块内部的 action,局部状态通过 context.state 暴露出来,根节点状态则为 context.rootState:

    对于模块内部的 getter,根节点状态会作为第三个参数暴露出来:

    const moduleA = {        state: () => ({            count:"",        }),        actions: {            //这里的state为局部状态,rootState为根节点状态            incrementIfOddOnRootSum ({ state, commit, rootState }) {                if ((state.count + rootState.count) % 2 === 1) {                    commit('increment')                }            }        }        mutations: {            // 这里的 `state` 对象是模块的局部状态            increment (state) {                state.count++            }        },        getters: {            //这里的state为局部状态,rootState为根节点状态            doubleCount (state) {                return state.count * 2            },            sumWithRootCount (state, getters, rootState) {                return state.count + rootState.count            }        }    }

    3、模块命名空间问题

    (1)namespaced: true 使模块成为带命名空间的模块

    当模块被注册后,它的所有 getter、action 及 mutation 都会自动根据模块注册的路径调整命名。

    const store = new Vuex.Store({  modules: {    account: {      namespaced: true,      // 模块内容(module assets) 在使用模块内容(module assets)时不需要在同一模块内额外添加空间名前缀。      state: () => ({}), // 模块内的状态已经是嵌套的了,使用 `namespaced` 属性不会对其产生影响      getters: {        isAdmin() {}, // ->使用: getters['account/isAdmin'],        // 你可以使用 getter 的第四个参数来调用        someGetter(state, getters, rootState, rootGetters) {          // getters.isAdmin          // rootGetters.someOtherGetter        },      },      actions: {        login() {}, // ->使用: dispatch('account/login')        // 你可以使用 action 的第四个参数来调用        //若需要在全局命名空间内分发 action 或提交 mutation,将 { root: true } 作为第三参数传给 dispatch 或 commit 即可        someAction({ dispatch, commit, getters, rootGetters }) {          // getters.isAdmin;          // rootGetters.someGetter;          // dispatch("someOtherAction");          // dispatch("someOtherAction", null, { root: true });          // commit("someMutation");          // commit("someMutation", null, { root: true });        },        someOtherAction(ctx, payload) {},        // 若需要在带命名空间的模块注册全局 action,你可添加 root: true,并将这个 action 的定义放在函数 handler 中。        otherAction: {          root: true,          handler(namespacedContext, payload) {}, // -> 'someAction'        },      },      mutations: {        login() {}, // ->使用: commit('account/login')      },      // 嵌套模块      modules: {        // 继承父模块的命名空间        myPage: {          state: () => ({}),          getters: {            profile() {}, // -> 使用:getters['account/profile']          },        },        // 进一步嵌套命名空间        posts: {          namespaced: true,          state: () => ({}),          getters: {            popular() {}, // -> 使用:getters['account/posts/popular']          },        },      },    },  },});

    (2)带命名空间的绑定函数的使用

    当使用 mapState, mapGetters, mapActions 和 mapMutations 这些函数来绑定带命名空间的模块时,写起来可能比较繁琐:

    computed: {            ...mapState({                a: state => state.some.nested.module.a,                b: state => state.some.nested.module.b            })        },        methods: {            ...mapActions([                'some/nested/module/foo', // -> this['some/nested/module/foo']()                'some/nested/module/bar' // -> this['some/nested/module/bar']()            ])        }

    createNamespacedHelpers 创建基于某个命名空间辅助函数,它返回一个对象,对象里有新的绑定在给定命名空间值上的组件绑定辅助函数。

    import { createNamespacedHelpers } from 'vuex'        const { mapState, mapActions } = createNamespacedHelpers('some/nested/module')        export default {            computed: {                // 在 `some/nested/module` 中查找                ...mapState({                a: state => state.a,                b: state => state.b                })            },            methods: {                // 在 `some/nested/module` 中查找                ...mapActions([                    'foo',                    'bar'                ])            }        }

    4、模块动态注册

    在 store 创建之后,你可以使用 store.reGISterModule 方法注册模块

    import Vuex from 'vuex'        const store = new Vuex.Store({  })        // 注册模块 `myModule`        store.registerModule('myModule', {            // ...        })        // 注册嵌套模块 `nested/myModule`        store.registerModule(['nested', 'myModule'], {            // ...        })

    之后就可以通过 store.state.myModule 和 store.state.nested.myModule 访问模块的状态。

    也可以使用 store.unregisterModule(moduleName) 来动态卸载模块。注意,你不能使用此方法卸载静态模块(即创建 store 时声明的模块)。

    可以通过 store.hasModule(moduleName) 方法检查该模块是否已经被注册到 store。

    关于“vuex中的Modules怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“vuex中的Modules怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

    --结束END--

    本文标题: vuex中的Modules怎么使用

    本文链接: https://www.lsjlt.com/news/327361.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • vuex中的Modules怎么使用
      这篇文章主要介绍了vuex中的Modules怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vuex中的Modules怎么使用文章都会有所收获,下面我们一起来看看吧。1 、什么是模块ModulesVuex...
      99+
      2023-06-30
    • vuex中Modules的使用详解
      目录前言1 、什么是模块Modules2、模块内部参数问题3、模块命名空间问题(1)namespaced: true 使模块成为带命名空间的模块(2)带命名空间的绑定函数的使用4、模...
      99+
      2024-04-02
    • vuex中使用modules时遇到的坑及问题
      目录vuex使用modules时遇到的坑vuex中modules基本用法1. store文件结构3. app.js文件内容5. 配置main.jsvuex使用modules时遇到的坑...
      99+
      2024-04-02
    • vuex怎么动态引入store modules
      这篇文章主要为大家展示了“vuex怎么动态引入store modules”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vuex怎么动态引入store modules”这篇文章...
      99+
      2023-06-29
    • VueX mapGetters获取Modules中的Getters方式
      目录VueX mapGetters获取Modules的GettersmapGetters的使用及简单实现原理项目中的mapGettersmapGetters简单实现原理VueX ma...
      99+
      2024-04-02
    • go的modules怎么使用
      本篇内容主要讲解“go的modules怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“go的modules怎么使用”吧!1.go modules的基本介绍1.1 提供的命令在go环境的sh...
      99+
      2023-06-30
    • Vuex中的API怎么使用
      今天小编给大家分享一下Vuex中的API怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。构造器选项state类型: O...
      99+
      2023-07-04
    • vue3.2中的vuex怎么使用
      这篇文章主要介绍“vue3.2中的vuex怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue3.2中的vuex怎么使用”文章能帮助大家解决问题。Vuex 中有以下几个核心概念:State:...
      99+
      2023-07-06
    • Vue3的CSS Modules和Scope怎么使用
      这篇文章主要讲解了“Vue3的CSS Modules和Scope怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3的CSS Modules和Scope怎么使用”吧!Css Mod...
      99+
      2023-07-04
    • Vue3中Vuex怎么使用
      本篇内容介绍了“Vue3中Vuex怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Vuex是做什么的?Vue官方:状态管理工具状态管理...
      99+
      2023-07-02
    • vue中vuex怎么使用
      这篇文章将为大家详细讲解有关vue中vuex怎么使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue概念:vuex 是 Vue 配套的 公共数据管理工具,它可以把一些...
      99+
      2024-04-02
    • vuex的Mutation怎么使用
      这篇“vuex的Mutation怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vu...
      99+
      2024-04-02
    • vuex在vue3中怎么使用
      这篇文章主要介绍“vuex在vue3中怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vuex在vue3中怎么使用”文章能帮助大家解决问题。在vue3中,vuex用于储存和管理所有组件的状态,...
      99+
      2023-06-29
    • Vue的Vuex怎么使用
      这篇文章主要讲解了“Vue的Vuex怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue的Vuex怎么使用”吧!优缺点优点响应式属于 vue 生态一环,,能够触发响应式的渲染页面更新...
      99+
      2023-06-28
    • 怎么在Goland中使用Go Modules创建项目
      这篇文章将为大家详细讲解有关怎么在Goland中使用Go Modules创建项目,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建项目Location:新项目文件夹GOROOT:go 安装根...
      99+
      2023-06-14
    • vuex中store的action和mutations怎么使用
      本文小编为大家详细介绍“vuex中store的action和mutations怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“vuex中store的action和mutations怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路...
      99+
      2023-06-30
    • css中 modules的作用是什么
      这期内容当中小编将会给大家带来有关css中 modules的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。css的全称是什么css的全称是Cascading Style Sheets(层叠样式表...
      99+
      2023-06-15
    • vuex中Getter怎么用
      这篇文章给大家分享的是有关vuex中Getter怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。就像计算属性...
      99+
      2023-06-20
    • Vue.js中Vuex怎么用
      小编给大家分享一下Vue.js中Vuex怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、安装并引入 Vuex项目结构:首...
      99+
      2024-04-02
    • VueX怎么安装使用
      本篇内容主要讲解“VueX怎么安装使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VueX怎么安装使用”吧!1、安装vuex依赖包npm install vuex ...
      99+
      2023-06-28
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作