码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Vuex 动态模块状态管理器


    模块化思想

            我们之前的博文已经讲述了Vuex怎么使用命名空间实现模块化状态管理。详情可以看:

    Vuex命名空间及如何获取根模块、兄弟模块状态管理器_AI3D_WebEngineer的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_42274805/article/details/133269196?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169839448016800182196324%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=169839448016800182196324&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-133269196-null-null.nonecase&utm_term=%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4&spm=1018.2226.3001.4450

    动态模块场景

            动态模块的设计理念是为了方便前端随时挂载和卸载状态管理器模块。

    模块书写

    1. import { dailyStatistics, getList } from '@/api/perception/index.js';
    2. export const INSTALL_MODULE_PATH = 'moduleStore/perception';
    3. export default {
    4. namespaced: true,
    5. state: {
    6. dailyStatistics: {},
    7. recordsList: {}
    8. },
    9. mutations: {
    10. saveDailyStatistics(state, loadData) {
    11. state.dailyStatistics = loadData;
    12. },
    13. saveRecordsList(state,loadData) {
    14. state.recordsList = loadData
    15. }
    16. },
    17. actions: {
    18. /**
    19. * @name 获取数据
    20. */
    21. getDailyStatistics({ commit }) {
    22. return dailyStatistics().then(res => {
    23. commit('saveDailyStatistics', res.data || {});
    24. });
    25. },
    26. getRecordsList({ commit }, {pageA,stepNum,info}) {
    27. ...
    28. commit('saveRecordsList', {
    29. total:res.data.total,
    30. list
    31. })
    32. });
    33. }
    34. },
    35. getters: {
    36. mockFireHotData(state){
    37. return state.recordsList.list.map(t => {
    38. t.eventType = 3
    39. return t
    40. })
    41. }
    42. },
    43. };

            与正常的模块没什么区别的,只是多导出了一个路径变量。用于指定她在仓库里的位置。

    挂载和卸载

    import PERCEPTION_MODULE, {INSTALL_MODULE_PATH,} from '@/store/modules/perception';
    1. beforeCreate() {
    2. // 注册状态管理器模块
    3. this.$store.registerModule(INSTALL_MODULE_PATH, PERCEPTION_MODULE);
    4. },
    5. beforeDestroy() {
    6. // 卸载管理器模块
    7. this.$store.unregisterModule(INSTALL_MODULE_PATH);
    8. },

            此时挂载上去的仓库位于this.$store.moduleStore/perception里

    使用

    1. // 调用actions
    2. await this.$store.dispatch(`${INSTALL_MODULE_PATH}/getRecordsList`, {...});
    1. // 调用仓库
    2. this.$store.state[INSTALL_MODULE_PATH].xxxx
    1. // 调用mutations
    2. this.$store.commit(`${INSTALL_MODULE_PATH}/saveDailyStatistics`, {...});
    1. // 调用getter
    2. this.$store.getters[`${INSTALL_MODULE_PATH}/mockFireHotData`]

  • 相关阅读:
    Sql语句:数学函数、字符串函数、日期时间函数
    swiperJS滑动时监听事件
    商业化广告--体系学习-- 4 -- 行业蓝图篇 -- 广告产品的变化与发展趋势
    127. SAP UI5 应用的全局配置(Global Configuration) 的设计和使用
    Qt隐式共享机制
    08-CSS中的position定位&盒子水平垂直居中
    2022-08-10 第四小组 修身课 学习笔记(every day)
    Python 对象表现得像函数
    两天学会微服务网关Gateway-Gateway过滤器
    二维空间下的向量旋转
  • 原文地址:https://blog.csdn.net/weixin_42274805/article/details/134078924
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号