网站LOGO
L S Y 小窝
页面加载中
12月5日
网站LOGO L S Y 小窝
菜单
  • L S Y 小窝
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    vuex-modules的使用
    点击复制本页地址
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    按住ctrl可打开默认菜单

    vuex-modules的使用

    yuan · 原创 ·
    Vue · vuex
    共 1968 字 · 约 1 分钟 · 138870
    本文最后更新于2022年09月23日,已经过了438天没有更新,若内容或图片失效,请留言反馈

    卫什么要使用module

    ■module,模块

    • vue使用单一状态树,那么意味着很多状态都会交给vuex来管理
    • 当应用变得非常复杂时,store对象就有可能变得相当臃肿
    • 为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割:
    const moduleA = {
      state: { ... },
      mutations: { ... },
      actions: { ... },
      getters: { ... }
    }
    
    const moduleB = {
      state: { ... },
      mutations: { ... },
      actions: { ... }
    }
    
    const store = new Vuex.Store({
      modules: {
        a: moduleA,
        b: moduleB
      }
    })
    
    store.state.a // -> moduleA 的状态
    store.state.b // -> moduleB 的状态
    
    

    模块的局部状态

    • 对于模块内部的 mutation 和 getter,接收的第一个参数是模块的局部状态对象,也就是state对象。
    const moduleA = {
      state: { count: 0 },
      mutations: {
        increment (state) {
          // 这里的 `state` 对象是模块的局部状态
          state.count++
        }
      },
    
      getters: {
        doubleCount (state) {
          return state.count * 2
        }
      }
    }
    
    • 对于模块内部的 action,局部状态通过 context.state 暴露出来,根节点状态则为context.rootState
    const moduleA = {
      actions: {
        incrementIfOddOnRootSum ({ state, commit, rootState }) {
          if ((state.count + rootState.count) % 2 === 1) {
            commit('increment')
          }
        }
      }
    }
    
    • 对于模块内部的 getter,根节点状态会作为第三个参数暴露出来
    const moduleA = {
      getters: {
        sumWithRootCount (state, getters, rootState) {
          return state.count + rootState.count
        }
      }
    }
    

    其他vuex文章

    Vuex概念和作用解析
    vuex-mutation同步函数
    vuex-getters的使用
    vuex-actions异步函数
    vuex-modules的使用

    声明:本文由 yuan(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    此页面评论区已关闭
    博客logo L S Y 小窝 51统计 百度统计
    MOEICP 萌ICP备20232210号 ICP 赣ICP备20003060号 又拍云 本站由又拍云提供CDN加速/云存储服务

    🕛

    本站已运行 3 年 270 天 6 小时 21 分

    🌳

    自豪地使用 Typecho 建站,并搭配 MyLife 主题
    L S Y 小窝. © 2020 ~ 2023.
    网站logo

    L S Y 小窝
     
     
     
     
    壁纸