vueX学习看这篇就够了

news2024/11/27 16:28:13

vuex就是为了实现全局状态管理

vuex有哪些东西?

  • state【状态】
  • getter【可以认为是 store 的计算属性,不会修改状态】
  • mutation【唯一修改state的方法,不支持异步】
  • action【不能直接修改state,通过触发mutation修改状态,支持异步】
  • moudle【模块,用于Vuex的拆分和分模块管理】
  • 一些辅助函数……

详情查看

关于Vuex的拆分和分模块组织管理

一般来说有两种思路
1.对vuex进行拆分,state\getter……单独放入不同文件然后引入。
2.业务拆分be like
在这里插入图片描述
也就是根据不同的业务需求
随便举个例子:Tabs.ts

import router from "@/router/index";
import { ElMessageBox } from "element-plus";
import { Commit } from "vuex";

class State {
  activeFrontTab!: any;
  activeBackstageTab!: any;
}

const state: State = new State();

const mutations = {
  // 改变活跃的activeTab
  CHANGE_ACTIVE_TAB(state: State, data: any) {
    if (data.type == 2) {
      state.activeBackstageTab = data.data;
    } else {
      state.activeFrontTab = data.data;
    }
  },
};
const actions = {
  changeActiveTab(context: { commit: Commit; getters: any }, data: any) {
    context.commit("CHANGE_ACTIVE_TAB", data);
  },
};

const getters = {
  activeFrontTab: (state: State) => state.activeFrontTab, // 活跃的tab
  activeBackstageTab: (state: State) => state.activeBackstageTab, // 活跃的tab
};

export default {
  namespaced: true,
  state,
  actions,
  mutations,
  getters,
};

index.ts

import Vue from 'vue'
import Vuex from 'vuex'

import Tabsfrom './modules/Tabs'

Vue.use(Vuex)

export default new Vuex.Store({
  modules: {
    Tabs
  },
  strict: ture
  //在严格模式下,无论何时发生了状态变更且不是由mutation函数引起的,将会抛出错误。这能保证所有的状态变更都能被调试工具跟踪到。
})

或者使用批量加载

import { createStore } from 'vuex';


//当刷新页面,项目重新加载,vuex 会重置,所有状态回到初始状态,使用 vuex-persistedstate 可以避免这种情况。
import createPersistedState from "vuex-persistedstate";

const modulesFiles = require.context("./modules", true, /\.ts$/);

// 提取出modules文件夹中所有ts文件 并 设置为modules入口参数
const modules = modulesFiles.keys().reduce((modules: any, modulePath) => {
  const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, "$1");
  const value = modulesFiles(modulePath);
  modules[moduleName] = value.default;
  return modules;
}, {});

export default createStore({
  modules,
  plugins: [createPersistedState()],
  strict: process.env.NODE_ENV !== 'production',
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/615598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT聊天功能,逐字返回数据

目录 前言一、前端二、后端1.接收前端请求的api如下是继续向其他接口请求的api如下是直接返回前端数据的api甚至可以返回图片 2.模拟GPT的接口 前言 我们在和GPT交流的时候发现GPT总是逐字的显示,因为GPT是一种基于神经网络的自然语言处理模型,它的训练…

王道考研计算机网络第一章知识点汇总

以上内容为1.1概念与功能的重点知识点 以下为1.2组成与分类: P2P模式下每台主机既可以是客户也可以是服务器,主机越多资源分享速度越快。 1.3标准化工作及相关组织 1.4性能指标 带宽只是指的是从主机内部往传输链路上投送数据的最大能力(从入口端放入数…

棱镜七彩中标浦发银行项目 助力金融行业开源治理

近日,棱镜七彩凭借出色的研发实力和优秀的产品服务能力在众多竞标企业中脱颖而出,成功中标上海浦东发展银行创新实验室“开源治理扫描工具信创改造课题”项目。棱镜七彩将为浦发银行在开源软件治理、软件安全可靠性等方面提供全方位支持。 在数字经济发…

odoo from 表单自定义按钮 执行JS代码 并调用websoket

业务场景: 集成串口读取RFID数据。由于串口是需要在客户端本地电脑执行才可以拿到数据 但是系统 部署在服务器 不能直接调用串口。 解决方案: 利用websoket通信 调用串口 传输 读取到的串口数据,解决服务器与本地之间的通信 本场景是基于odo…

深度解析:2023年软件测试的10个新趋势和挑战

随着技术的飞速发展,软件测试的角色和责任也在经历重大转变。我们在2023年目前所面临的一些新趋势和挑战值得所有从业人员关注。以下是这些主要趋势和挑战的深度分析。 趋势一:人工智能和机器学习在测试中的应用 AI和ML正在越来越多地应用于软件测试&am…

给httprunnermanager接口自动化测试平台演示参数化(五)

文章目录 一、背景1.1、前情回顾 二、参数化实现三、总结 一、背景 参数化,在使用httprunner框架的时候,参数话说实在的不是很实用,因为更多是场景化的用例编写,不用过多的去参数化批量执行,无非也就是登录注册查询啥的…

数据库系统概论 ---知识点大全(期末复习版)

(一)绪论 数据(Data):是数据库中存储的基本对象 数据的定义:描述事物的符号记录 数据的种类:文字、图形、图象、声音等 数据的特点:数据与其语义是不可分的 数据库(Database,简称DB):是长期…

数据结构与算法-跳表详解

我们知道如果一个数组是有序的,查询的时候可以使用二分法进行查询,时间复杂度可以降到 O(logn) ,但如果链表是有序的,我们仍然是从前往后一个个查找,这样显然很慢,这个时候我们可以使用跳表(Ski…

chatgpt赋能python:Python如何依次取字符——一种简单有效的方法

Python如何依次取字符——一种简单有效的方法 1. 介绍 Python 常常被用于编写文本处理脚本,而文本处理中的一个常见任务就是依次取字符。本文将介绍一种简单高效的方法,让您可以在 Python 中便捷地完成此操作。 2. 如何依次取字符 Python 中的字符串…

黑客入门必备指南

在探讨黑客如何入门之前,首先我们的思想要端正。 作为一名黑客,必须要有正直善良的价值观。 或许你听过这么一句话“能力越大,责任越大”作为一名黑客就是如此,黑客的技术越精湛,能力就越大,就越不能去干…

spark入门 Linux模式 Local模式 (二)

一、下载对应的spark包 https://archive.apache.org/dist/spark/spark-3.0.0/ 我这里下载的是spark-3.0.0-bin-hadoop3.2.tgz 二、解压 tar -zvxf spark-3.0.0-bin-hadoop3.2.tgz三、启动 再解压路径的bin目录执行下 ./spark-shell 四、测试 WordCount代码例子 sc.textFil…

接口测试-使用mock生产随机数据

在做接口测试的时候,有的接口需要进行大量的数据进行测试,还不能是重复的数据,这个时候就需要随机生产数据进行测试了。这里教导大家使用mock.js生成各种随机数据。 一、什么是mock.js mock.js是用于生成随*机数据,拦截 Ajax 请…

uniapp引入uView正确步骤及误区

1.导入uview组件库 2.导入成功后在main.js里引入 import uView from /uni_modules/uview-ui Vue.use(uView)3.在App.vue里引入样式文件 import "/uni_modules/uview-ui/index.scss";4.在pages.json里添加配置 "easycom": {"^u-(.*)": "/…

大聪明教你学Java | parallelStream().forEach() 的踩坑日记

前言 🍊作者简介: 不肯过江东丶,一个来自二线城市的程序员,致力于用“猥琐”办法解决繁琐问题,让复杂的问题变得通俗易懂。 🍊支持作者: 点赞👍、关注💖、留言&#x1f4…

springboot学生管理系统(含源码+数据库)

本次系统开发所用到的Java语言、Spring框架、SpringMVC框架、MyBatis框架、SpringBoot框架以及MySQL。 1.系统分析 (1)教师管理需求,学校想轻松的查阅指定教师的信息,学校对教师进行一个基本的信息管理,学校可以方便…

【python】脚本编写

这里写自定义目录标题 欢迎使用python来编写脚本环境搭建 欢迎使用python来编写脚本 测试方向,测试报告,单元测试 环境搭建 python环境搭建 下载地址 https://www.python.org/ 文档 https://docs.python.org/3/ pycharm的环境 使用chatgpt来实现代码功…

【安全架构】

概念 安全是产品的属性,安全的目标是保障产品里信息资产的保密性(Confidentiality)、完整性(Integrity)和可用性(Availability),简记为CIA。 保密性: 保障信息资产不被未…

通过Visual Studio诊断工具定位软件CPU瓶颈

通过VS诊断工具定位软件CPU瓶颈 前情提示:正常情况下我们使用调试模式会看不到诊断工具窗口,控制台会报“无法启动标准收集器。请尝试修复 Visual Studio 的安装。 (HRESULT: 0xe1110002)”这样的错误。 解决方式:通过[Downloads - Visual St…

00后是太恐怖了,工作没两年,跳槽到我们公司起薪20K都快接近我了

在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的,是技术平平&…