vue3使用vuex的示例(模块化功能)
目录
1. store/index.ts
2. main.ts
3. App.vue调用
4. 如果删除moduleA的namespaced属性, 保留moduleB的namespaced:true
5. 则App.vue修改为:
1. store/index.ts
注意: 需要使用时带上模块名称的namespaced必须为true, 不写或者为false时调用时不需要写模块名称(获取state的值必须加模块名)
import { createStore } from "vuex";
// A模块
const moduleA = {namespaced: true,state: {name: "moduleA",},getters: {newName(state) {return state.name;},},mutations: {changeName(state, payload) {state.name = payload;},updateAge(state, playLoad) {state.age = playLoad;},},actions: {changeAge({ commit }, age) {setTimeout(() => {commit("updateAge", age);}, 0);},},
};
// B模块
const moduleB = {namespaced: true,state: {name: "moduleB",age: 33,},getters: {newName(state) {return state.name;},},mutations: {changeName(state, payload) {state.name = payload;},updateAge(state, playLoad) {console.log("playLoad", playLoad);state.age = playLoad;},},actions: {changeAge(ctx, count) {console.log("触发了-模块B的action");setTimeout(() => {ctx.commit("updateAge", count);}, 1000);},},
};
export default createStore({// 分模块modules: {moduleA,moduleB,},
});
2. main.ts
import { createApp } from "vue";
import App from "./App.vue";
import * as Vue from "vue";
import store from './store';const app = createApp(App);
app.use(store);
app.mount("#app");
3. App.vue调用
<template><div id="container"><!-- 1、使用A模块的state数据 --><div>姓名: <input type="text" @change="changeAName($event)"></div><div>年龄: <input type="number" @change="changeAAge($event)"></div><h1>模块a:</h1><p>姓名(state): {{ store.state.moduleA.name }}</p><!-- 2、使用A模块的getters数据 --><p>姓名(getters): {{ store.getters["moduleA/newName"] }}</p><p>年龄: {{ store.state.moduleA.age }}</p><!-- 1、使用B模块的state数据 --><h1>模块b:</h1><div>姓名: <input type="text" @change="changeBName($event)"></div><div>年龄: <input type="number" @change="changeBAge($event)"></div><p>姓名(state): {{ store.state.moduleB.name }}</p><!-- 2、使用B模块的getters数据 $store.getters['模块名/计算属性']--><p>姓名(getters): {{ store.getters["moduleB/newName"] }}</p><p>年龄: {{ store.state.moduleB.age }}</p></div>
</template>
<script setup lang="ts">
import { useStore } from "vuex";// userStore可以拿到vuex仓库实例
const store = useStore();const changeAName = (e) => {store.commit('moduleA/changeName', e.target.value)
};
const changeAAge = (e) => {store.dispatch("moduleA/changeAge", e.target.value)
};const changeBName = (e) => {// 提交B模块的更改store.commit('moduleB/changeName', e.target.value)
};
const changeBAge = (e) => {// 传参用法store.dispatch("moduleB/changeAge", e.target.value)
};
</script>
<style lang='scss' scoped></style>
4. 如果删除moduleA的namespaced属性, 保留moduleB的namespaced:true
import { createStore } from "vuex";
// A模块
const moduleA = {state: {name: "moduleA",},getters: {newName(state) {return state.name;},},mutations: {changeName(state, payload) {state.name = payload;},updateAge(state, playLoad) {state.age = playLoad;},},actions: {changeAge({ commit }, age) {setTimeout(() => {commit("updateAge", age);}, 0);},},
};
// B模块
const moduleB = {namespaced: true,state: {name: "moduleB",age: 33,},getters: {newName(state) {return state.name;},},mutations: {// 更改数据函数changeName(state, payload) {state.name = payload;},updateAge(state, playLoad) {console.log("playLoad", playLoad);state.age = playLoad;},},actions: {changeAge(ctx, count) {setTimeout(() => {ctx.commit("updateAge", count);}, 1000);},},
};
export default createStore({// 分模块modules: {moduleA,moduleB,},
});
5. 则App.vue修改为:
<template><div id="container"><!-- 1、使用A模块的state数据 --><div>姓名: <input type="text" @change="changeAName($event)"></div><div>年龄: <input type="number" @change="changeAAge($event)"></div><h1>模块a:</h1><p>姓名(state): {{ store.state.moduleA.name }}</p><p>姓名(getters): {{ store.getters["newName"] }}</p><p>年龄: {{ store.state.moduleA.age }}</p><!-- 1、使用B模块的state数据 --><h1>模块b:</h1><div>姓名: <input type="text" @change="changeBName($event)"></div><div>年龄: <input type="number" @change="changeBAge($event)"></div><p>姓名(state): {{ store.state.moduleB.name }}</p><!-- 2、使用B模块的getters数据 $store.getters['模块名/计算属性']--><p>姓名(getters): {{ store.getters["moduleB/newName"] }}</p><p>年龄: {{ store.state.moduleB.age }}</p></div>
</template>
<script setup lang="ts">
import { useStore } from "vuex";// userStore可以拿到vuex仓库实例
const store = useStore();const changeAName = (e) => {store.commit('changeName', e.target.value)
};
const changeAAge = (e) => {store.dispatch("changeAge", e.target.value)
};const changeBName = (e) => {store.commit('moduleB/changeName', e.target.value)
};
const changeBAge = (e) => {store.dispatch("moduleB/changeAge", e.target.value)
};
</script>
<style lang='scss' scoped></style>
相关文章:
vue3使用vuex的示例(模块化功能)
目录 1. store/index.ts 2. main.ts 3. App.vue调用 4. 如果删除moduleA的namespaced属性, 保留moduleB的namespaced:true 5. 则App.vue修改为: 1. store/index.ts 注意: 需要使用时带上模块名称的namespaced必须为true, 不写或者为false时调用时不需要写模块名称(获取st…...
Vatee万腾的科技决策力奇迹:Vatee科技决策力的独特之选
在金融投资的复杂领域中,Vatee万腾以其独特的科技决策力创造了一场真正的奇迹。这不仅是一种引领投资者走向成功的选择,更是一种开启新时代的科技决策奇迹。 Vatee的科技决策力背后蕴藏着强大的智慧和创新。通过大数据分析、智能算法的运用,V…...
ai技术是怎么换脸的,实现原理是什么,有那些软件
人工智能(AI)在近年来的迅猛发展中,带来了许多令人惊叹的技术创新,其中之一就是人工智能换脸技术。这项技术通过深度学习和图像处理的手段,使得用户可以将自己的面孔替换成其他人物,引发了广泛的讨论和应用…...
在IDEA中使用maven项目总结
一 什么是maven Maven本身也是Java写的,他是一款服务于Java平台的自动化构建工具 Maven是一个项目管理工具,旨在简化软件项目的构建、依赖管理和项目信息管理。它使用基于项目对象模型(Project Object Model,POM)的…...
oracle备份一个表需要做的操作
在 Oracle 中备份一个表可以通过以下步骤完成,包括备份表结构(DDL)和备份表数据(DML): 备份表结构(DDL): 使用 CREATE TABLE AS SELECT: 创建一个新表&#…...
C 语言 switch 语句
C 语言 switch 语句 在本教程中,您将通过一个示例学习在C语言编程中创建switch语句。 switch语句使我们可以执行许多代替方案中的一个代码块。 虽然您可以使用if…else…if阶梯执行相同的操作。但是,switch语句的语法更容易读写。 switch … case的语…...
架构师:构建高可用服务治理Consul集群与Kong网关管理
1、简述 在微服务架构中,高可用性和服务治理是非常重要的方面。Consul作为一个开源的服务发现和配置工具,可以帮助我们实现高可用服务治理。Kong是一个用于管理 API 网关的工具,它可以提供强大的流量控制和安全功能。本文将介绍如何构建一个高可用的Consul集群,并结合Kong…...
elemenui的Upload上传整合成数组对象
1. 普通直接上传 <el-upload action"" :before-upload"doBeforeUpload"><el-button type"success" size"mini">导入</el-button></el-upload> methods:{doBeforeUpload(file) {let reader new FileReader(…...
莫桑比克市场开发攻略,收藏一篇就够了
中国与莫桑比克之间的经贸关系源远流长,两国之间的贸易和投资合作呈现出快速增长的趋势。莫桑比克是农业国,生产以及生活资料依赖进口,市场潜力还是非常不错的,今天就给大家分享一下。文章略长,大家点赞收藏关注慢慢看…...
go语言学习
1、示例代码: imgName : g.Cfg().MustGet(ctx, "migrate.img-arm-rbd").String() 在给定的代码行中,g.Cfg() 是一个函数调用,它返回一个配置对象。MustGet(ctx, "migrate.img-arm-rbd") 则是在这个配置对象上调用的方法…...
安哥拉市场开发攻略,收藏一篇就够了
安哥拉是非洲南部的一个国家,中国是安哥拉最大的贸易伙伴,安哥拉是中国在非洲的第二大贸易伙伴,中国人在安哥拉也是非常受欢迎的,虽然安哥拉经济比较落后,但是市场潜力还是非常不错的。今天就来给大家分享一下安哥拉的…...
第六章 :Spring Boot web开发常用注解(一)
第六章 :Spring Boot web开发常用注解(一) 前言 本章节知识重点:作者结合自身开发经验,以及觉察到的一个现象:Springboot注解全面理解和掌握的并不多,对注解进行了全面总结,共分两个…...
Unity DOTS系列之System中如何使用SystemAPI.Query迭代数据
最近DOTS发布了正式的版本, 我们来分享一下System中如何基于SystemAPI.Query来迭代World中的数据,方便大家上手学习掌握Unity DOTS开发。 SystemAPI.Query的使用 System有两种,一种是Unmanaged 的ISystem,一种是managed 的SystemBase,这两种System都可…...
【objectarx.net】创建渐变填充
net.gradientHatch(创建渐变填充)...
【软考】信息安全基本要素
目录 一、机密性二、完整性三、可用性四、可控性五、可审查性六、可鉴别性七、不可抵赖性八、可靠性 一、机密性 1.保证信息不泄露给未经授权的进程或实体,只供授权者使用 二、完整性 1.信息只能被得到允许的人修改,并且能够被判别该信息是否已被篡改过…...
[C++ ]:7.内存管理+模板引入。
内存管理模板引入 一.内存管理:1.内存区域划分图:2.区域划分实例:3.C 内存管理方式:newdelete4.自定义类型的new和delete:一.简单类:二.日期类:三.栈类:四.队列类(栈实现…...
【计算机网络】HTTPS
文章目录 前言为什么会出现 HTTPSHTTPS 是如何进行加密的1. 对称加密非对称加密中间人攻击3. 引入证书 前言 前面我们学习了应用层中使用比较常见的 HTTP 协议,但是呢?在实际的使用中,浏览器和服务器之间的通信其实很少使用到 HTTPÿ…...
阿里云服务器怎么样?阿里云服务器优势、价格及常见问题介绍
阿里云(Alibaba Cloud)是阿里巴巴集团旗下的云计算服务提供商,其提供的云服务器(ECS)是其核心服务之一。在云计算市场中,阿里云服务器备受用户的青睐,那么,阿里云服务器究竟怎么样呢…...
【狂神说Java】Dubbo + Zookeeper
✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :狂神说Java 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远…...
Pytorch实战教程(三)-构建神经网络
0. 前言 我们已经学习了如何从零开始构建神经网络,神经网络通常包括输入层、隐藏层、输出层、激活函数、损失函数和学习率等基本组件。在本节中,我们将学习如何在简单数据集上使用 PyTorch 构建神经网络,利用张量对象操作和梯度值计算更新网络权重。 1. PyTorch 构建神经网…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
