手撕Vuex-模块化共享数据下

前言

好,经过上一篇的介绍,了解了 Vuex 当中的模块化,本章主要介绍 Vuex 当中的模块化共享数据下篇。

我们知道在全局的 Store 对象当中,我们可以定义全局的数据,那么如果我们在模块当中也定义了一个属性名称和全局的属性名称相同,那么会发生什么呢?

我们先来看看,在全局当中定义了一个 globalName 属性,然后在模块当中也定义了一个 globalName 属性:

展示一下模块化当中的 globalName 属性:

<p>{{ this.$store.state.home.globalName }}</p>

运行项目,查看控制台是没有任何错误信息的,说明在模块当中定义与全局相同的属性名称是没有问题的。

看了共享数据,接下来我们来看看 getters/mutations/actions 能不能定义与全局相同的方法呢?

getters

我们先来看看 getters,我们在全局当中定义了一个 getGlobalName 方法,然后在模块当中也定义了一个 getGlobalName 方法:

返回浏览器,查看控制台输出了一个错误信息:

[vuex] duplicate getter key: getGlobalName

说明在模块当中定义与全局相同的 getters 方法是不行的。

❗️注意:多个模块中不能出现同名的getters方法

mutations

看了 getters,接下来我们来看看 mutations 能不能定义与全局相同的方法呢?

我们在全局当中定义了一个 changeGlobalName 方法,然后在模块当中也定义了一个 changeGlobalName 方法。

全局:

changeGlobalName(state, payload) {
    console.log("全局中的changeGlobalName");
    state.globalName += payload;
}

模块:

changeGlobalName(state, payload) {
    console.log("home中的changeGlobalName");
    state.globalName += payload;
}

返回浏览器,点击全局模块的按钮,查看控制台输出, 发现输出了两次:

说明在模块当中定义与全局相同的 mutations 方法是可以的。

❗️注意:

  • 多个模块的mutations中可以出现同名的方法
  • 多个同名的方法不会覆盖, 会放到数组中然后依次执行

actions

看了 mutations,接下来我们来看看 actions 能不能定义与全局相同的方法呢?

我们在全局当中定义了一个 asyncChangeGlobalName 方法,然后在模块当中也定义了一个 asyncChangeGlobalName 方法。

全局:

asyncChangeGlobalName({commit}, payload) {
    console.log("全局中的asyncChangeGlobalName");
    setTimeout(() => {
        commit('changeGlobalName', payload);
    }, 1000);
}

模块:

asyncChangeGlobalName({commit}, payload) {
    console.log("home中的asyncChangeGlobalName");
    setTimeout(() => {
        commit('changeGlobalName', payload);
    }, 1000);
}

返回浏览器,点击全局模块的按钮,查看控制台输出, 发现输出了两次:

说明在模块当中定义与全局相同的 actions 方法是可以的。

❗️注意:

  • 多个模块的actions中可以出现同名的方法
  • 多个同名的方法不会覆盖, 会放到数组中然后依次执行

总结

好了,这里我们就知道了在模块化当中,如果定义了与全局相同的属性名称,是没有问题的,但是如果定义了与全局相同的 getters 方法,那么就会报错,但是如果定义了与全局相同的 mutations/actions 方法,那么就会将这些方法放到一个数组当中,然后依次执行。

知道了这些之后,我们就可以实现 module 模块化了。

posted @   BNTang  阅读(226)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
历史上的今天:
2021-11-05 Vue
  1. 1 总会有人离开 王巨星
  2. 2 月亮 孟凡明
  3. 3 迟里乌布
  4. 4 我只能离开 颜人中
  5. 5 达尔文 蔡健雅
  6. 6 夜色滚烫 叶明净
  7. 7 你的星环 路飞文
  8. 8 不再说话 三块木头
  9. 9 黄昏 粥粥和小伙/粥粥
  10. 10 爱不单行 刘大拿
  11. 11 心动贩卖机 PIggy
  12. 12 别来无恙 苏星婕
  13. 13 我们的歌 刘大拿
  14. 14 一直很安静 王贰浪
  15. 15 去有风的地方 清音
  16. 16 雪 Distance Capper/罗言
  17. 17 坏女孩 徐良/小凌
  18. 18 乐园 沧桑Cang333/虎皮蛋/曲甲
  19. 19 Ayo(Explicit) Chris Brown/Tyga
  20. 20 我的美丽feat.海洋Bo 海洋Bo/高睿
  21. 21 世事可爱 粥粥和小伙/粥粥
  22. 22 我记得 赵雷
  23. 23 我想牵着你的手 许嵩
  24. 24 人们都不懂 刘诺然
  25. 25 寻一个你(电视剧《苍兰诀》温情主题曲) TTTTTeehom
  26. 26 子莫格尼 杉和
  27. 27 Cat Cafe Shoffy
  28. 28 风停了雨停了我们还拥抱着 Superluckyqi
  29. 29 寂寞沙洲冷 于潼
  30. 30 三国恋 王巨星
  31. 31 达尔文 林俊杰
  32. 32 有些 颜人中
  33. 33 小模样 张小只ya
  34. 34 是否 程响
  35. 35 楼顶上的小斑鸠 队长
  36. 36 笑场 薛之谦
  37. 37 还是分开 张叶蕾
  38. 38 修炼爱情 林俊杰
  39. 39 二零三 毛不易
  40. 40 雅俗共赏 许嵩
  41. 41 Serendipity 古瑞斯Graps/Zakiya晴子
  42. 42 就让这大雨全都落下·2023 刘大拿
  43. 43 老男孩 筷子兄弟
  44. 44 有何不可 许嵩
  45. 45 缓缓 杜宣达
  46. 46 好久不见 陈奕迅
  47. 47 爱的魔法(Cover 金莎) 封茗囧菌
  48. 48 在你的身边 盛哲
  49. 49 带我去找夜生活 告五人
  50. 50 假面舞会 很美味
  51. 51 STAY The Kid LAROI/Justin Bieber
  52. 52 我好想睡觉的 无敌西红柿
  53. 53 日不落(温柔版)
  54. 54 恋爱画板 锦零
  55. 55 7710 好乐无荒/尹露浠
  56. 56 给你呀(又名:for ya) 蒋小呢
  57. 57 Love Story Taylor Swift
  58. 58 Plain Jane(Remix 13z) 鱼幼微
  59. 59 晚风 7opy/BT07
  60. 60 拜托 孙晨
  61. 61 乌梅子酱 李荣浩
  62. 62 南半球与北海道 范倪Liu
  63. 63 星河万里 Rom邢锐
不再说话 - 三块木头
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 吕口口

作曲 : 吕口口

本歌曲来自〖网易飓风计划〗

10亿现金激励,千亿流量扶持!

业务联系:jf399@vip.163.com

编曲:口哨娱乐

清晰的记得我们做的梦

它在我脑海 抹不去

像一道彩虹

后来的你又遇见了谁

是否有惊喜 的时候

请轻一点描绘

其实只是在意

你过得开不开心

不用叙述过程原因

努力克制情绪

别再触碰了旧疾

白费了忘掉你的力气

请听一听 我藏在心里的想法

虽然陈旧能不能给我解答

我承认我还放不下

红着眼的争执 统统蒸发

请回头望 我还在原地等你啊

能不能再让我送你回家

枕着我的手的脸啊

你怎么沉默不再说话

后来的你又遇见了谁

是否有惊喜 的时候

请轻一点描绘

其实只是在意

你过得开不开心

不用叙述过程原因

努力克制情绪

别再触碰了旧疾

白费了忘掉你的力气

请听一听 我藏在心里的想法

虽然陈旧能不能给我解答

我承认我还放不下

红着眼的争执 统统蒸发

请回头望 我还在原地等你啊

能不能再让我送你回家

枕着我的手的脸啊

你怎么沉默不再说话

混音:蛋总

制作人:吕口口

监制:胡圣羽、何湲

企划:黄鲲、苏文嫒

统筹:袁晓童、刘宇航

出品:口哨娱乐传媒

发行:网易云音乐x讯飞音乐

本歌曲来自〖网易飓风计划〗

10亿现金激励,千亿流量扶持!

业务联系:jf399@vip.163.com

点击右上角即可分享
微信分享提示