首页 > 其他分享 >VUEX 使用学习六 : modules

VUEX 使用学习六 : modules

时间:2023-02-21 14:34:16浏览次数:55  
标签:... modules mutations actions 学习 state module 模块 VUEX

转载请注明出处:

  当Store中存放了非常多非常大的共享数据对象时,应用会变的非常的复杂,Store对象也会非常臃肿,所以Vuex提供了一个Module模块来分隔Store。通过对Vuex中的Store分隔,分隔成一个一个的Module模块,每个Module模块都拥有自己的state、mutation、actions和getters。

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 的状态

  对于模块中的mutations和getters,传入的第一个参数规定为state,而actions则依旧是context参数。如下:

const moduleA = {
state: {
count: 0
},
mutations: {
increment (state) {
// 这里的 `state` 对象是模块的局部状态
state.count++
}
},

getters: {
doubleCount (state) {
return state.count * 2
}
},
actions: {
// context对象其实包含了 state、commit、rootState。
incrementIfOddRootsum (context) {
if ((context.state.count + context.rootState.count) % 2 === 1) {
// 调用mutations
commit('increment')
}
}
}
}

在module中通过mapState、mapGetters、mapActions和mapMutations等辅助函数来绑定要触发的函数

  第一种方式

methods: {
...mapActions([
'some/nested/module/foo',
'some/nested/module/bar'
])
}

  在vuex中,可以为导入的state、getters、actions以及mutations命名别名,,这样可以方便调用

methods: {
...mapActions([
'foo': 'some/nested/module/foo',
'bar': 'some/nested/module/bar'
])
}

 

  第二种方式
  对于这种情况,你可以将模块的空间名称字符串作为第一个参数传递给上述函数,这样所有绑定都会自动将该模块作为上下文。于是上面的例子可以简化为:

methods: {
...mapActions('some/nested/module', [
'foo', // -> this.foo()
'bar' // -> this.bar()
])
}

 

  在网上找到一个demo 示例,可参考学习: https://gitee.com/xiangbaxiang/vue-store

 



标签:...,modules,mutations,actions,学习,state,module,模块,VUEX
From: https://blog.51cto.com/u_15535797/6076570

相关文章

  • VUEX 使用学习五 : getter
    转载请注明出处:Getter对Store中的数据进行加工处理形成新的数据。他不会修改state中的原始数据,起到的是包装数据的作用;有时我们需要从store中的state中派生出一......
  • gin框架学习
    Gin框架web开发本质gomodinit项目名packagemainimport( "fmt" "io/ioutil" "net/http")funcsayHello(whttp.ResponseWriter,r*http.Request){ b,_:=i......
  • python+playwright 学习-3.页面操作Action
    前言Playwright可以与HTML输入元素交互,例如文本输入、复选框、单选按钮、选择选项、鼠标单击、键入字符、键和快捷方式以及上传文件和焦点元素。fill()输入文字使用......
  • Python 学习记录
    前言Python3.5安装步骤Python官网Pycharm第一个程序.pyprint("hellopython")基本语法type(a)=数据类型整数(在线进制转换)定义a=12Python可以......
  • python+playwright 学习-2.Selector 选择器定位元素
    前言Selector选择器,也就是通常说的元素定位了,页面上点点点的操作,都是基于元素定位,所以这块是重点需要学的核心内容。Selector选择器说到元素定位,大家肯定会首先想到s......
  • 系统性能调优学习笔记04
    使用cgroup管理资源限制1、管理资源限制1.1使用ulimit限制系统资源限制系统资源早期使用的方法是ulimit命令,设置的限制是系统范围的,并在登录和会话启动时由PAM模块进行验证......
  • JWT学习笔记
    JWT学习笔记JWT介绍jwt官网:https://jwt.io/百度:JWT(JSONWEBToken)的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也......
  • git,repo学习
    Repo:就是一组git命令的集合,repoinit下载一个分支。repostart文件名--all本地传建的另一个代码分支,用于备份作用。比如:repostartzhao--allgit brach查看当前......
  • 如何通过使用vscode工具学习ts(typescript)
    1如果有vscode工具可自行忽略这条;如果没有vscode工具,可进入官网http://vscode.p2hp.com/进行下载,下载过程可自行百度。2D盘新建文件夹随意命名为TS-LEAN,然后再【终端】......
  • VUEX 使用学习三 : mutations
    转载请注明出处:在Vuex中store数据改变的唯一方法就是提交 ​​mutations​​​。​​mutations​​​里面装着一些改变数据方法的集合,这是Vuex设计很重要的一点,就......