码农知识堂 - 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`]

  • 相关阅读:
    Vue中的深度监听(Deep Watch):详细解析与实际示例
    优雅迷人的小程序 UI 风格
    Android Selinux详解[五]--新增hal服务标签相关
    【Nginx笔记02】通过Nginx服务器转发客户端的WebSocket接口到后端服务
    75. 颜色分类(中等 数组 双指针 排序)
    pymongo 查询结果cursor转list数组较慢的解决办法
    provide / inject 所谓响应式的对象
    Comparable接口与Comparator接口
    Adv. Intell. Syst. | 青岛大学发表基于深度学习和宿主信息嵌入的微生物组多标签疾病检测研究...
    SpringBoot SpringCloud Nacos等一些组件版本对应
  • 原文地址:https://blog.csdn.net/weixin_42274805/article/details/134078924
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号