Vue2:组件间通信框架Vuex

一、原理图及作用

功能介绍:
简单说就是Vue项目中,各个组件间通信的一种框架
相较于之前的全局事件总线,该框架更实用!
提高了代码的复用率,把核心业务代码,集中到store中,这样,一处实现,处处调用。
原理:
VC 调用 actions
actions调用mutations
mutations调用state
VC读取state
完美闭环!
在这里插入图片描述

二、核心代码

vue_test/src/store/index.js

//该文件用于创建vuex中最为核心的store//引入Vue
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'Vue.use(Vuex);//准备actions     用于响应组件中的动作
const actions = {jia(context, value) {console.log('actions中的jia被调用了')context.commit('JIA', value)},jian(context, value)  {console.log('actions中的jian被调用了')context.commit('JIAN', value)},jiaOdd(context,value){console.log('actions中的jiaOdd被调用了')if(context.state.sum % 2){context.commit('JIA',value)}},jiaWait(context,value){console.log('actions中的jiaWait被调用了')setTimeout(()=>{context.commit('JIA',value)},500)}
};
//准备mutations       用于操作数据state
const mutations = {JIA(state,value){console.log('mutations中的JIA被调用了')state.sum += value},JIAN(state,value){console.log('mutations中的JIAN被调用了')state.sum -= value}
};
//准备state       用于存储数据
const state = {sum: 0 //当前的和
};//创建并暴露store
export default new Vuex.Store({actions,mutations,state
});

main.js
这样配置后,在所有的VC中就可以使用这个store了。

import store from './store/index'//创建vm,整个项目就这1个vm,其他的都是vc组件
new Vue({el:"#app",render: h => h(App),store,beforeCreate() {Vue.prototype.$bus = this;     //安装全局总线}
});

三、使用案例

1、读取store中的变量值

{{$store.state.sum}}

2、VC中修改store中的变量值

方式1this.$store.dispatch('jia',this.n)
方式2this.$store.commit('JIA',this.n)

四、详细说明

1、类比Javamvc
我们可以看到,store中,主要有三个对象

actions		    类似于Java的controller接口,业务逻辑
mutations		类似于Java的service层,修改数据
state			类似于Java的dao层,存储数据

2、store中各对象详解
actions对象中的函数参数:
context
有这个context,那么,actions中的函数,就可以调用actions中其它的函数
不一定,actions就要进入mutations步骤。
在这里插入图片描述
value
就是调用时传入的具体值。

3、mutations对象中的函数参数:
state:就是store中的state
value:调用时传入的具体参数值。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Lambda表达式:简化编程,提高效率

Java Lambda表达式:简化编程,提高效率 1. 使用Lambda表达式进行集合遍历1.1 未使用Lambda表达式:1.2 使用Lambda表达式: 2. 使用Lambda表达式进行排序2.1 未使用Lambda表达式:2.2 使用Lambda表达式: 3. 使用…

市场复盘总结 20240208

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 二进三: 进级率中 25% 最常用的…

Practical User Research for Enterprise UX

2.1 Why It’s Hard to Get Support for Research in Enterprises 2.1.1 Time and Budget Instead of answering the question “What dowe gain if we do this research?”, ask instead “What do we stand to lose if we don’t do the research?” 2.1.2 Legacy Thinkin…

Mysql第二关之存储引擎

简介 所有关于Mysql数据库优化的介绍仿佛都有存储引擎的身影。本文介绍Mysql常用的有MyISAM存储引擎和Innodb存储引擎,还有常见的索引。 Mysql有两种常见的存储引擎,MyISAM和Innodb,它们各有优劣,经过多次优化和迭代,…

数据结构对链表的初步认识(一)

已经两天没有更新了,今天就写一篇数据结构的链表吧,巩固自己也传授知识,不知道各位是否感兴趣看看这一篇有关联表的文章。 目录 链表的概念与结构 单向链表的实现 链表各个功能函数 首先我在一周前发布了一篇有关顺序表的文章,…

漏洞原理 | CORS跨域学习篇

本文由掌控安全学院 - 帆先生 投稿 0x01:原理 1、 什么是CORS 全称跨域资源共享,用来绕过SOP(同源策略)来实现跨域访问的一种技术。 CORS漏洞利用CORS技术窃取用户敏感信息 2、 同源策略简介 同源策略是浏览器最核心也是最基本的安全功能&#xff0…

Netty中的内置通信模式、Bootstrap和ChannelInitializer

内置通信传输模式 NIO:io.netty.channel.socket.nio 使用java.nio.channels包作为基础–基于选择器的方式Epoll:io.netty.channel.epoll由JNI驱动的epoll()和非阻塞IO.这个传输支持只有在Linux上可用的多种特性,如果SO_REUSEPORT,比NIO传输更快&#xf…

layui表格中使用cascader后导致表格滚动条消失

修改前,受影响页面 修改后最终想要的效果 修改方法

TIM编码器接口(编码器测速)

定时器编码器接口自动计次--------->对应手册14.3.12编码器接口模式 应用场景: 电机控制PWM驱动电机,编码器测电机速度,PID算法闭环控制 ------------------------------------------------------------------------------------------…

Java IO详解

一、流的概念与作用 流(Stream): 在Java IO中,流是一个核心的概念。流从概念上来说是一个连续的数据传输过程。人们根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。你既可以从流中读取数据,也可以往流中写数据。流的…

计算机毕业设计SSM基于的高校学习资源共享系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: vue mybatis Maven mysql5.7或8.0等等组成,B…

Camtasia2023破解版下载

Camtasia2023破解版是一款简单好用的屏幕录像软件,它结屏幕录制和录制视频编辑等功能于一身,不管是用来创建视频教程还是相关教学视频或者操作演示等都是不二的选择,软件支持录制全屏或者部分区域进行选择录制,可录制网络摄像头、…