vuex - 21年的笔记 - 后续更新

vuex是什么

Vuex是实现组件全局状态(数据)管理的一种机制,方便的实现组件之间的数据的共享

使用vuex统一管理状态的好处

  • 能够在vuex中集中管理共享的数据,易于开发和后期维护
  • 能够高效地实现组件之间的数据共享,提高开发效率
  • 存储在vuex中的数据都是响应式的,能够实时保持数据与页面的同步

使用vuex

  • npm install vuex –save
  • 创建store.js文件在src项目中,项目中的代码为:代码1
  • 在main.js中引入store:import store from ‘./store’
  • 在main.js的new Vue({})中添加:代码2
// 代码1
export default Vuex.Store = new Vuex.Store({//state中存放的就是全局共享数据state:{ },mutation:{ },action:{ }getters: {  }
})
new Vue({el: '#app',router,components: { App },template: '<App/>',store,render:h=>h(App)
}).$mount('#app')

访问state中数据方式

// 以count数据为例: this.$store.state.count 
import { mapState } from 'vuex' // 从vuex中按需导入mapState函数
// 通过刚才导入的mapSate函数,将当前组件需要的全局数据,映射为当前组件的computed计算属性
computed: { ...mapState( [ 'count' ])

Mutation

Mutation用于变更store中的数据

  • 只能通过mutation变更store数据,不可以直接操作Store中的数据
  • 通过mutation方式虽然操作稍微繁琐,但是可以集中监控所有数据的变化
  • Mutation中定义对应的数据处理函数
  • Mutation中的事件处理函数的传值,一个是本身的传值,一个为接收的值
  • 在mutation中不能写异步代码,如计时器setTimeout等,异步操作写在action中
//传递的参数,接收的参数
add(state,step){state.count += step
}

触发mutaion

在methods中触发:

//在使用数据的页面中处理,该情况为调用stare.js中mutation中的add方法
handle(){//在接收的方法,传递的参数this.store.commit('add', 3)  //commit的作用就是调用某个mutation函数
}

从vuex中按需导入mapMutation函数

import { mapMutations } from vuex
// 通过刚才导入的mapMutation函数,将需要的mutation函数,映射为当前组件的methods方法:(例如调用store.js中的add和del方法)
methods:{ ...mapMutations( ['add', 'del'] )  } 

actions

Actions用于异步操作,但是在Actions中还是要通过触发Mutation的方式间接变更数据

const store = new Vuex.store({// ...省略其他代码mutations: {add(state) {state.count++}},actions: {addAsync(context) {setTimeout(() => {context.commit('add')}, 1000)}}})

在这里插入图片描述

Commit只能触发mutation中的某个函数,通过接收形参context来点出commit
在Actions中不能直接修改state中的数据,必须通过context.commit触发某个motation才行
下图中的dispath函数是专门用来触发actions的
若带有参数,则将参数接在后面
在这里插入图片描述

// 从vuex中按需导入mapActions函数
import { mapActions } from 'vuex'methods: {  // 将所需的函数映射到当前组件的methods中...mapAction( ['addAsync', 'delAsync'] ),...mapMutation(['add','del'])
} //在mapMutations或mapActions中映射方法后,可以直接@click调用方法
<el-button @click="add"></el-button>

Getter

Getter用于对Store中的数据进行加工处理,并不修改store中的数据

getters:{showNum(state){return '当前的数量是:'+state.count+'.'}}

使用getter的方式

// This.$store.getter.名称: {{ $store.getters.showNum }}import { mapGetters } from 'vuex'
conputed:{ ...mapGetters( ['showNum'] ) 

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

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

相关文章

【Unity】层(Layer)详解

1.什么是Layer? 我们在做游戏开发的时候&#xff0c;尤其是场景比较复杂的时候&#xff0c;我们就需要使用Layer来分类。 比如&#xff1a; 排除不被灯光照亮的Layer 射线检测特定的 Layer 摄像机只能看到某些 Layer 对象之间的碰撞检测 Layer … 2.添加Layer ①在Inspecto…

Matlab 双目相机标定(内置函数)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 相机标定的目的就是要找到从世界坐标转换为图像坐标所用到的投影P矩阵各个系数(即相机的内参与外参)。具体过程如下所述: 1、首先我们需要获取一个已知图形的图像(这里我们使用MATLAB所提供的数据)。 2、找到同…

“找不到msvcr100.dll”或“msvcr100.dll丢失”的多种解决方法分享

当计算机系统中msvcr100.dll文件发生丢失时&#xff0c;导致某些应用程序无法正常运行。msvcr100.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;对于许多基于Windows操作系统的应用程序正常运行至关重要。小编将介绍5种解决msvcr100.dll丢失问题的方法…

命令提示符——CMD基础操作介绍

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

马斯克的 Grok-1 开源,3140亿参数目前最大开源模型,最佳实践教程来啦

近几天开源社区最大的热点&#xff0c;莫过于埃隆马斯克信守承诺的最大开源模型Grok-1。 Grok-1 是一款 314B 大型专家混合 (Mixture of Expert&#xff0c;MoE) Transformer&#xff0c;作为基础模型&#xff0c;基于大量文本数据进行训练&#xff0c;没有针对任何具体任务进…

经济事件对我们投资没影响吗?昂首资本的这两个实例说明白再说

各位投资者现在还不明白经济事件对我们投资的影响吗&#xff1f;下面昂首资本就通过两个实例&#xff0c;各位投资者能否明白经济事件对我们投资的影响。 2015年6月4日&#xff0c;澳大利亚零售量新闻发布。分析师预计销量增幅高达0.4%&#xff0c;但是结果却大吃一惊&#xf…

记录一个vue,ele-ui实现列表指定行数批量选中解决方法

这个问题卡了一天&#xff0c;试了好多方法总算试出来了&#xff1a; <template><div><!-- 功能区卡片 --><el-card class"mb-4"><el-row class"mb-1"><el-col :span"12">请输入想勾选的专利起止条数&am…

.NET开源、免费、强大的交互式绘图库

前言 今天大姚给大家分享一款.NET开源&#xff08;采用MIT许可证&#xff09;、免费、强大的交互式绘图库&#xff0c;该库能够轻松地实现大型数据集的交互式显示。使用几行代码即可快速创建折线图、柱状图、饼图、散点图等不同类型的图表&#xff1a;ScottPlot。 ScottPlot类…

使用cv::ximgproc::FastBilateralSolverFilter优化realsense D455的深度图

1 源码 OpenCV中内置了很多滤波器&#xff0c;这里我们讨论cv::ximgproc其中包含的滤波器。 https://docs.opencv.org/3.4/da/d17/group__ximgproc__filters.html 需要注意的是&#xff0c;默认安装的OpenCV中不包含cv::ximgproc&#xff0c;请从源码重修编译。 在这里贴上我…

机器人路径规划:基于双向A*算法(bidirectional a star)的机器人路径规划(提供Python代码)

一、双向A*算法简介 传统A*算法是一种静态路网中求解最短路径最有效的方法&#xff0c; 它结合了BFS 算法和迪杰斯特拉算法(Dijkstra)的优点。 和迪杰斯特拉算法(Dijkstra)一样&#xff0c; A*算法能够用于 搜索最短路径&#xff1b; 和BFS 算法一样&#xff0c; A*算法可以用…

Word文档密码设置:Python设置、更改及移除Word文档密码

给Word文档设置打开密码是常见的Word文档加密方式。为Word文档设置打开密码后&#xff0c;在打开该文档时&#xff0c;需要输入密码才能预览及编辑&#xff0c;为Word文档中的信息提供了有力的安全保障。如果我们需要对大量的Word文档进行加密、解密处理&#xff0c;Python是一…

1. Java基础入门

1. Java基础入门 1.1 Java介绍(了解) 1.1.1 Java背景 Java是美国 sun 公司&#xff08;Stanford University Network&#xff09;在1995年推出的一门计算机高级编程语言。Java 之父&#xff1a;詹姆斯高斯林(James Gosling)。 2009年 sun公司被Oracle公司收购。Java公司图标…

大数据面试题 —— Zookeeper

目录 ZooKeeper 的定义ZooKeeper 的特点ZooKeeper 的应用场景你觉得Zookeeper比较重要的功能ZooKeeper 的选举机制 ***zookeeper主节点故障&#xff0c;如何重新选举&#xff1f;ZooKeeper 的监听原理 ***zookeeper集群的节点数为什么建议奇数台 ***ZooKeeper 的部署方式有哪几…

JAVA 栈和队列总结

除了最底层下面三个是实现类&#xff0c;其他都是接口。 双端队列&#xff08;队头队尾都可以插入和删除元素&#xff09;的方法&#xff1a; 普通队列方法&#xff1a; 常用的是add(),poll(), element() 我们用Deque(双端队列)实现栈 Deque当栈用的时候的方法。 deque.push…

利用WebGL绘制简单几何

利用WebGL绘制最简单的几何图形 一、WebGL简介 WebGL是一种用于在网页上渲染交互式3D和2D图形的JavaScript API。它基于OpenGL ES 2.0&#xff0c;提供了一种在浏览器中使用硬件加速图形的方式。 二、图形系统绘图流程 图形系统的通用绘图流程会包括六个部分&#xff1a; …

2024年【电工(初级)】考试内容及电工(初级)证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【电工&#xff08;初级&#xff09;】考试内容及电工&#xff08;初级&#xff09;证考试&#xff0c;包含电工&#xff08;初级&#xff09;考试内容答案和解析及电工&#xff08;初级&#xff09;证考试练习…

【教学类-40-01】20240322 幼儿视力检查照片合成GIF

作品展示——GIF动图 背景需求&#xff1a; 2024年3月22日&#xff0c;中班幼儿视力检查&#xff0c;保健老师表扬我们班幼儿视力正常率高。 我为每位孩子拍照时&#xff0c;突然想把动作图用Python变成GIF图片&#xff0c;于是每位孩子都拍了多张“辨认视力表的不同手势”&a…

基于Springboot的西安旅游系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的西安旅游系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

动态规划(算法竞赛、蓝桥杯)--单调队列优化绿色通道

1、B站视频链接&#xff1a;E45 单调队列优化DP 绿色通道_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N5e410; int n,tim,w[N],f[N],q[N];bool check(int m){int h1,t0;for(int i1; i<n; i){while(h<t && f[q[t]]>f[i-…

visual studio卸载几种方法

1、控制面板卸载&#xff1b; 2、有时候会发现控制面板卸载会失败&#xff0c;无法卸载&#xff0c;这时候要先把下面目录的关于visual studio的都删除&#xff0c;然后重启电脑后&#xff0c;重新安装vs即可。