vue 状态管理 五、Module用法
系列导航
vue 状态管理 三、Mutations和Getters用法
Module用法
一、基本知识
1、Module是模块的意思, 为什么在Vuex中我们要使用模块呢?
(1)Vue使用单一状态树,那么也意味着很多状态都会交给Vuex来管理.
(2)当应用变得非常复杂时,store对象就有可能变得相当臃肿.
(3)为了解决这个问题, Vuex允许我们将store分割成模块(Module), 而每个模块拥有自己的state、mutation、action、getters等
2、代码组织形式

二、效果
页面中调用action中的方法



三、目录结构

四、源码
index.js
import { createStore} from 'vuex'
import moduleA from './modules/moduleA'
export default createStore({
state: {
counter: 0,
},
mutations: {
},
actions: {
},
getters: { },
modules: {
a: moduleA
}
})
moduleA.js
export default {
state: {
name: '张三'
},
mutations: {
updateName(state, payload) {
state.name = payload
}
},
getters: {
fullname(state) {
return state.name + 'AAAAAA'
},
fullname2(state, getters) {
return getters.fullname + 'BBBBBB'
},
fullname3(state, getters, rootState) {
return getters.fullname2 + rootState.counter
}
},
actions: {
aUpdateName(context,payload) {
console.log(context);
setTimeout(() => {
context.commit('updateName', payload)
}, 1000)
}
}
}
App.vue
<template>
<div >
<h2>----------App内容: modules中的内容----------</h2>
<h2>{{$store.state.a.name}}</h2>
<button @click="updateName">修改名字</button>
<h2>{{$store.getters.fullname}}</h2>
<h2>{{$store.getters.fullname2}}</h2>
<h2>{{$store.getters.fullname3}}</h2>
<button @click="asyncUpdateName">异步修改名字</button>
</div>
</template> <script>
import { computed } from 'vue'
import { useStore } from 'vuex'
export default {
components: {
},
methods: {
updateName() {
this.$store.commit('updateName', '李四')
},
asyncUpdateName() {
this.$store.dispatch('aUpdateName','王五')
} },
setup() {
return { }
}
}
</script>
vue 状态管理 五、Module用法的更多相关文章
- Vue状态管理vuex
前面的话 由于多个状态分散的跨越在许多组件和交互间各个角落,大型应用复杂度也经常逐渐增长.为了解决这个问题,Vue提供了vuex.本文将详细介绍Vue状态管理vuex 引入 当访问数据对象时,一个 V ...
- vue状态管理器(用户登录简单应用)
技术点:通过vue状态管理器,对已经登录的用户显示不同的页面: 一 vue之状态管理器应用 主要用来存储cookie信息 与vue-cookies一起使用 安装:npm install vue-co ...
- vuex(vue状态管理)
vuex(vue状态管理) 1.先安装vuex npm install vuex --save 2.在项目的src目录下创建store目录,并且新建index.js文件,然后创建vuex实例,引入 ...
- 五、vue状态管理模式vuex
一.vuex介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 即data中属性同时有一 ...
- 一文解析Pinia和Vuex,带你全面理解这两个Vue状态管理模式
Pinia和Vuex一样都是是vue的全局状态管理器.其实Pinia就是Vuex5,只不过为了尊重原作者的贡献就沿用了这个看起来很甜的名字Pinia. 本文将通过Vue3的形式对两者的不同实现方式进行 ...
- Vue状态管理之Bus
一般在项目中,状态管理都是使用Vue官方提供的Vuex 当在多组件之间共享状态变得复杂时,使用Vuex,此外也可以使用Bus来进行简单的状态管理 1.1 父组件与子组件之间的通信 vue.config ...
- VueX(vue状态管理)简单小实例
VueX:状态管理 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 核心模块:State. ...
- vue状态管理vuex从浅入深详细讲解
1.vuex简介以及创建一个简单的仓库 vuex是专门为vue框架而设计出的一个公共数据管理框架,任何组件都可以通过状态管理仓库数据沟通,也可以统一从仓库获取数据,在比较大型的应用中,数据交互庞大的情 ...
- Vue状态管理模式---Vuex
1. Vuex是做什么的? 官方解释: Vuex 是一个专为Vue.js 应用程序开发的 状态管理模式 它采用 集中式存储管理 应用的所有组件的状态, 并以相应的规则保证状态以一种可预测的方式发生变化 ...
- Vue状态管理之Vuex
Vuex是专为Vue.js设计的状态管理模式.采用集中存储组件状态它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 1.首先让我们从一个vue的计数应用开始 ...
随机推荐
- 如何用java的虚拟线程连接数据库
我觉得这个很简单 首先确保你idea支持jdk21. 然后把idea编译成的目标字节码设置为21版本的 然后编写代码. 创建虚拟线程的方式有: Runnable runnable = () -> ...
- gridlayout
<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android=" ...
- Head First Java学习:第九章-构造器和垃圾收集器
对象的前世今生 对象如何创建.存在何处以及如何让保存和抛弃更有效率. 会述及堆.栈.范围.构造器.超级构造器.空引用等. 1.内存的两个区域:堆和栈 堆(heap):对象的生存空间,又称为可垃圾回收的 ...
- Kernel Memory 入门系列:文档预处理
Kernel Memory 入门系列:文档预处理 Embedding为我们提供了问题理解和文档检索的方法,但是面对大量的文档,如果在用于提问的时候再进行文档的Embedding的话,那这个过程是非常耗 ...
- 文心一言 VS 讯飞星火 VS chatgpt (164)-- 算法导论13.1 4题
四.用go语言,假设将一棵红黑树的每一个红结点"吸收"到它的黑色父结点中,使得红结点的子结点变成黑色父结点的子结点(忽略关键字的变化).当一个黑结点的所有红色子结点都被吸收后,它可 ...
- NetSuite 开发日记:批量增删改
一.批量插入/创建 使用 record.create() 插入数据时,一次只能插入一条,有多条数据需要插入时只能通过循环的方式,这样效率非常慢,耗时会随着数据量的增大而呈线性增长,有一种巧妙的方式可以 ...
- 微信模板消息 PHP
微信SDK: <?php class Oauth { //获得全局access_token public function get_token(){ //如果已经存在直接返回access_tok ...
- 码农的转型之路-PLC异地组网与远程控制
PLC异地组网与远程控制,需求是基于园子认识的朋友提供,大体是实现PLC多个局域网异地组网,并实现远程控制.大屏展示.手机端控制.预警推送等功能.其他就是可以方便二次开发界面,以满足不同客户的需求. ...
- windows server 2019 IIS网站属性上没有asp.net标签 ,aspnet_regiis -i 不能安装用命令解决
用如下命令安装: dism /online /enable-feature /featurename:IIS-ASPNET45 /all
- 原生JavaScript 与 jQuery 执行Ajax请求
原生JavaScript和jQuery都可以用来执行Ajax请求,以下是它们的基本实现方式的比较: 原生JavaScript实现Ajax请求: var xhr = new XMLHttpRequest ...