Vue学习日记 Day6 —— Vuex

一、vuex概述

1、目标:明确vuex是什么,应用场景,优势

2、是什么:vuex是一个vue的状态管理工具,状态就是数据

(简述:vuex是一个插件,可以帮我们管理vue通用的数据)

3、场景:

(1)某个状态在很多组件来使用

(2)多个组件共同维护一份数据

4、优势:

(1)共同维护一份数据,数据集中化管理

(2)响应式变化

(3)操作简洁(vuex提供了一些辅助函数)

5、构建vuex环境

1、安装vuexyarn add vuex@3   (233,344)2、新建vuex模块文件新建 store/index.js专门存放vuex3、创建仓库Vue.use(Vuex)new Vuex.Store()4、main.js导入挂载import store from '@/store/index'store

6、核心概念 - state状态(mapState)

1、提供数据:State提供唯一的公共数据源,所有共享的数据都要统一放到Store中的State中存储。语法:const store = new Vuex.Store({state: {//数据count:100,title:'大标题'}})        2、获取数据:2.1、通过store直接访问模板中:{{ $store.state.xxx }}组件逻辑中:this.$store.state.xxxJS模块中:  store.state.xxx2.2、通过辅助函数mapState是辅助函数,可以帮助我们吧store中的数据自动映射到组件的计算属性中使用步骤:2.2.1、导入mapStateimport { mapState } from 'vuex'2.2.2、数组方式引入statemapState(['所需要的属性'])2.2.3、展开运算符映射...mapState(['所需要的属性'])映射后便能直接用计算属性的方式读取

7、核心概念 - mutations

1、基础语法

1、概念:Vuex同样遵循单向数据流,组件不能直接修改仓库的数据2、报错:默认不会报错,甚至能够自由的修改,可这是一种违背单向数据流原理的做法,若要使其报错,可以添加strict: true,有利于初学者检测不规范的代码(上线时需要关闭)3、目标:使用mutaions修改state的数据(1)定义mutaions对象,对象中存放修改state的方法mutations:{//第一个参数是当前store的state属性addCount(state){state.count += 1            }        (2)组件中提交调用mutationsthis.$store.commit('方法名')

2、传参语法

1、传参语法this.$store.commit('方法名',参数)2、定义语法addCount (state, n) {state.count += n}3、注:Vuex不能传递多个参数(可以使用对象,数组等复杂形式)

8、辅助函数 - mapMutations

1、作用:将mutation中的方法提取出来,映射到组件methods中2、使用:import { mapMutations } from 'vuex'methods:{...mapMutations([函数名])    }

9、核心概念 - actions

(1)目标:明确actions的基本语法,处理异步操作

(2)说明:mutations必须是同步的(便于监测数据变化,记录调试)

1、定义语法actions:{//context:上下文方法名(context,num){//行为        }}2、调用语法this.$store.dispatch('方法',参数)

10、辅助函数 - mapActions

1、同样是映射到组件methods中2、用法:import { mapActions } from 'vuex'methods:{...mapActions(['方法名'])    }

11、核心概念 - getters

1、说明:类似于计算属性,是从state中派生出的状态

1、定义语法:getters:{//(1)getters函数的第一个参数是state//(2)getters函数必须要有返回值方法    }2、访问语法:$store.getters.方法名

12、辅助函数 - mapGetters

1、放在computed中computed:{...mapGetters(['方法名'])    }

13、核心概念 - 模块module(进阶语法)

(1)概念:由于vuex使用单一状态树,应用的所有状态会集中到一个比较大的对象,当应用变得非常复杂时,store对象就有可能变得相当臃肿。

1、使用步骤(1)创建store/modules/目录//这个目录下的每个js文件都是一个模块,都有着自己所对应的概念(2)编写js文件const state = {}const mutations = {}...//创建数据和方法export default {//导出state,mutations,...}(3)使用import user from './model/user'//在index.js中导入文件modules: {//在modules下挂载user,}      

(2)目标:掌握模块中state的访问语法

1、使用模块中的数据:(1)直接通过模块名访问$store.state.模块名.xxx(2)通过mapState映射默认根级别的映射 mapState(['xxx'])子模块的映射 mapState('模块名',['xxx'])注:若想通过模块名访问,需要在js中添加namespaced:true

(3)目标:掌握模块中mutation的访问语法

1、直接调用:$store.commit('模块名/方法名',参数)2、通过mapMutations映射默认映射:mapMutations(['xxx'])子模块映射mapMutations('模块名',['xxx'])注:若想通过模块名访问,需要在js中添加namespaced:true

(4)目标:掌握模块中action的访问语法

1、直接调用:$store.dispatch('模块名/xxx',额外参数)2、同mapActions映射默认映射:mapActions(['xxx'])子模块映射mapActions('模块名',['xxx'])注:若想通过模块名访问,需要在js中添加namespaced:true

(5)目标:掌握模块中getters的访问语法

1、直接通过模块名访问$store.getters('模块名/方法名')2、通过mapGetters映射默认根级别的映射mapGetters(['xxx'])子模块的映射 mapGetters('模块名',['xxx'])注:若想通过模块名访问,需要在js中添加namespaced:true

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

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

相关文章

物理隔离条件下,如何安全高效地进行内外网文件导入导出?

内外网文件导入导出通常指的是在内部网络(内网)和外部网络(外网)之间传输文件的过程。这在企业环境中尤其常见,因为内部网络通常包含敏感数据,而外部网络(如互联网)则允许更广泛的访…

基于 Spark 的电商用户行为分析系统

摘 要 针对传统的大数据处理框架 Hadoop 在执行计算任务时抽象层次低、运行速度慢、无法实时计算等问题, 提出了一种基于内存的分布式框架 Spark 作为计算引擎的方法。结合 Hadoop 框架中的分布式文件存储 技术,设计了一个电商用户行为分析系统。首先根据数据特点建立用户画…

生成对抗网络(GANs):技术演化与广泛应用

目录 前言1 技术原理1.1 基本构成1.2 训练过程1.3 数学原理 2 应用领域2.1 图像合成2.2 数据增强2.3 风格迁移2.4 超分辨率 结论 前言 生成对抗网络(GANs),自2014年由Ian Goodfellow及其同事首次提出以来,已经引起了广泛的关注和…

JavaScript进阶:js的一些学习笔记-4

文章目录 1. 拷贝1. 浅拷贝2. 深拷贝 2. 异常处理 1. 拷贝 这里指的拷贝是指拷贝引用类型的数据(对象) 1. 浅拷贝 拷贝对象:Object.assign() 或者 {…obj} 展开运算符 const obj {name:liuze,age:23 } const o {...obj}; o.age 22; console.log(o); console.…

Sparse Convolution 讲解

文章目录 1. 标准卷积与Sparse Conv对比(1)普通卷积(2) 稀疏卷积(3) 改进的稀疏卷积(subm)2 Sparse Conv 官方API3. Sparse Conv 计算3. 1 Sparse Conv 计算流程3. 2 案例3.2.1 普通稀疏卷积3.2.2 subm模式的稀疏卷积3D点云数据非常稀疏,尤其体素化处理后(比如200k的点放…

【spring】@PropertySource 注解学习

PropertySource介绍 PropertySource是Spring框架中的一个注解,主要用于Java配置类中,用于引入额外的属性文件,以便在Spring应用上下文中使用这些属性。 在Spring 3.1引入Java配置后,我们可以通过Configuration注解的类和Bean注解…

独孤思维:你这样做副业,招人烦

01 做副业的,大家都不傻。 不要加群就bao粉。 只会招人烦。 不能靠价值吸引来的粉丝,你想想他对你的忠诚度能有多少? 无非是快速灌流量,得到心理上的慰藉。 02 我的主业,是互联网医疗。 最近,上线了…

Windows11企业版安装WSL2和Ubuntu发布版(避坑)

背景 win10企业版升级win11企业版后,安装WSL2,最后安装WSL的Ubuntu发布版,尝试网上各种方法,还是出现文章第三节所写的问题,差点被这问题搞放弃了,全网少有针对这个问题的答案,有也不顶用&…

【python】自动化工具Selenium与playwright去除webdriver检测

对这个世界如果你有太多的抱怨 跌倒了就不敢继续往前走 为什么人要这么的脆弱 堕落 请你打开电视看看 多少人为生命在努力勇敢的走下去 我们是不是该知足 珍惜一切 就算没有拥有 🎵 周杰伦《稻香》 # -*- coding:utf-8 -*- import timefrom s…

k8s-高可用etcd集群 26

reset掉k8s2,k8s3,k8s4节点 清理完网络插件后重启 快速创建一个k8s集群 修改初始化文件 添加master节点 备份 查看etcd配置 启动docker 将etcd二进制命令从容器拷贝到本机 备份 查看快照状态 删除集群资源 恢复 停掉所有的核心组件 从快照恢复 重启所有…

知识蒸馏Matching logits与RocketQAv2

知识蒸馏Matching logits 公式推导 刚开始的怎么来,可以转看下面证明梯度等于输出值-标签y C是一个交叉熵,我们要求解的是这个交叉熵对的这个梯度。就是你可以理解成第个类别的得分。就是student model,被蒸馏的模型,它所输出的…

RTT——stm32f103的can总线通信

1.创建工程 2.配置时钟和引脚 引脚配置使能CAN 时钟配置,采用外部高速时钟 生成MDK工程后复制相关初始化函数到RTT-studio中 将void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)函数复制至broad.c文件中 将时钟配置函数复制到drv_clk.c中,只复制函数…

C语言—打印如图矩阵

输出矩阵 在一个二维数组中形成并输出如下矩阵: #include <stdio.h> main() { int i,j,a[5][5];for(i0;i<4;i)for(j0;j<4;j)if(i<j) a[i][j]1;else a[i][j]i-j1;for(i0;i<4;i){ for(j0;j<4;j)printf("%d ",a[i][j]);printf("…

Xilinx FPGA模式配置

Xilinx FPGA模式配置 Xilinx UltraScale FPGA有7种配置模式&#xff0c;由模式输入引脚M[2:0]决定。七种模式如图1所示。 图1 7种配置模式 7种模式可分为3大类&#xff0c; 1、JTAG模式&#xff08;可归为从模式&#xff09;&#xff1b; 2、主模式&#xff1b; 3、从模式…

影响交易收益的因素有哪些?

在尝试做交易时&#xff0c;你可能会问自己一个问题&#xff1a;交易一天能赚多少钱&#xff1f;“如果我全职投入交易&#xff0c;一天能赚多少&#xff1f;”或者更广泛地说&#xff0c;“交易能为我带来怎样的财富&#xff1f;”这些问题本质上都充满了不确定性&#xff0c;…

Spring Cloud Alibaba微服务从入门到进阶(一)(SpringBoot三板斧、SpringBoot Actuator)

Springboot三板斧 1、加依赖 2、写注解 3、写配置 Spring Boot Actuator Spring Boot Actuator 是 Spring Boot 提供的一系列用于监控和管理应用程序的工具和服务。 SpringBoot导航端点 其中localhost:8080/actuator/health是健康检查端点&#xff0c;加上以下配置&#xf…

pytorch之诗词生成--2

先上代码: # -*- coding: utf-8 -*- # File : dataset.py # Author : AaronJny # Time : 2019/12/30 # Desc : 构建数据集 from collections import Counter import math import numpy as np import tensorflow as tf import settingsclass Tokenizer:""&…

成功解决RuntimeError: OpenSSL 3.0‘s legacy provider failed to load

报错 RuntimeError: OpenSSL 3.0s legacy provider failed to load. This is a fatal error by default, but cryptography supports running without legacy algorithms by setting the environment variable CRYPTOGRAPHY_OPENSSL_NO_LEGACY. If you did not expect this er…

Java中文乱码问题深入剖析与高效解决方案

引言&#xff1a; 在现代软件开发中&#xff0c;特别是在涉及跨平台、多语言环境下&#xff0c;中文乱码问题一直是一个令人头疼的难题。Java作为一种跨平台、面向对象的编程语言&#xff0c;在处理中文字符编码方面也存在一些挑战。本文将深入探讨Java中文乱码问题的根源&…

css引入方式有几种?link和@import有什么区别

在HTML中&#xff0c;有两种主要的方式可以引入CSS样式表&#xff1a;使用<link>标签和使用import规则。它们之间有一些区别。 <link>标签&#xff1a;可以使用<link>标签在HTML文件中引入外部CSS样式表。它必须放在<head>标签中&#xff0c;并使用re…