Vuex 学习

news2025/1/26 15:33:44
  1. 什么是vuex:

    专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。
     
  2. 原理图


     
  3. 安装使用vuex

    注意:vue2.0 对应  vuex3.0,vue3.0 对应vuex4.0,如果版本选中错误就会报错

    npm i vuex,如果用的是vue2.0 需要指定版本, npm i vuex@3  ,如果不指定版本,默认下载vuex4

    vuex 的actions、mutations 、state并不是自己管理的,而是交给store管理的,当引入并

    使用了vuex后,vm的对象上就会多了一个store属性。这个store 是一个js文件,并不是官方

    提供的,而是自己创建的,store的代码如下:/store/index.js



    注意引入和使用 vuex的操作是在  store/index.js中完成的,是因为vuex的使用必须在 生成store实例之前,在此处引入并使用vuex后,在main.js中引入store即可,然后创建的时候,传入store配置项



    这样,vuex的开发环境就搭建好了
     
  4. vuex的执行顺序是,this.$store.dispatch()触发 actions中的方法,acitons中的方法触发mutations中的方法,mutations中的方法操作state中的数据。

    例如,如下代码





    通过this.$store.dispatch('add',this.n) 触发 actions中的 add方法,dispatch的第一个参数为actions中的方法名,第二个参数为实际传的值,add方法的第一个参数是

    context,第二个参数是实际传过来的值。 context 通过调用 commit 方法,触发mutations中的ADD方法,其中,commit方法中,第一个参数为  mutations中的方法名ADD,第二个参数为传递的值,ADD 也有两个参数,第一个参数为state,可以直接操作state中的数据,第二个参数为传过来的值。

    也可以通过commit方法直接调用 mutations中的方法



    页面展示state中的数据:


     
  5. getters 配置项:

    是vuex新增的配置项,首先定义getters对象,然后在store中进行配置



    里面有一个方法,是自定义的,参数就是 state,方法需要返回值

    组件中显示getters中的返回值:


     
  6. 4个map方法的使用:

    4个map方法分别是,mapState、mapGetters、mapActions和mapMutations

    为什么要使用这几个方法,是为了简化代码的写法,目前从state和getters中取数据都是通过

    {{$store.state.sum}} 和{{$store.state.bigSum}}这种方式,模板中尽量使用简单的表达式,所

    以可以改为在计算属性中返回值



    模板中直接调用计算属性的方法名取值即可,



    如果state中的属性较多,就需要一个一个的写计算方法,所以可以通过vuex的map方法帮我们去映射store中的属性和方法

    首先需要引入

    import {mapState,mapGetters} from vuex



    对象写法中的每一个对象的第一个参数对应计算属性中的方法名,可以不加引号,在模板调用时使用,第二个参数对应state中的属性,必须加 引号 ,数组写法,每个元素对应state中的属性,必须加 引号,模板解析时,直接 {{sum}}  和{{school}} 即可。前面的 三个点必须加,这是因为mapState返回的是一个对象,对象里面的本质是一个个函数,所以需要将mapState进行拆包,否则会报错。

    mapGetters同理,对应的是getters中的函数



    mapActions和mapMutations 用于帮我们生成和  actions和mutations对话的方法,

    要使用的话,首先先引入

    import {mapActions,mapMutations} from vuex

    这里只介绍mapMutations的写法,mapActions同理。如下图的三种写法,效果是一样的



    亲自的写法,在调用的时候,是不需要传参的,直接调用方法名即可,参数在commit的时候再传入,如下图所示



    mapActions与mapMutations使用时,若需要传递参数需要:在模板中绑定事件时传递好参数,否则参数是事件对象。 



    ADD对应  mutations中的方法

 

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

clone下来的vue项目出现“An unknown git error occurred”,vue全局挂载axios及配置全局请求和响应拦截,uni-app的全局请求和响应拦截,对请求方法的封装

文章目录前言一、如何解决clone下来的vue项目出现“An unknown git error occurred”?二、vue全局挂载axios并设置全局的请求和响应拦截1.先下载安装好axios,这个就不用多说了2,vue2中的全局挂载:3,在vue3中我们又应该怎么全局挂载axios呢&am…

vue中使用百度地图

vue中使用百度地图 之前写过一篇vue调用百度地图的文章,但是写得不是很清晰,所以重新整理一篇;申请百度地图ak 这个我在之前的那篇文章已经讲过,就不再细说,链接如下:vue调用百度地图 初始化地图 引入地图…

同一页面实现recycleView三种布局【recycleView + adapter】

文章目录🥭🥭简介🥭🥭效果图🥭🥭代码🍎🍎三个Adapter修饰器🍎🍎主界面函数 && FuritBean🍎🍎布局文件🥭&#x1f…

js获取dom元素宽高

一,前言 1.对于css盒子模型,我们使用width和height等来定义dom元素的宽高,而有时我们需要在js中获取元素的宽高进行一些操作。 2.dom操作提供了相应的属性来实现这一点 二,clientWidth和clientHeight 1.clientWidth和clientHe…

js监听页面或元素scroll事件,滚动到底部或顶部

基本原理&#xff1a; 1、滚动到底部 元素的滚动距离 元素的可视距离 元素的滚动条总距离2、滚动到顶部 元素的滚动距离 0监听页面滚动 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv&…

Flask:使用SocketIO实现WebSocket与前端Vue进行实时推送(gevent-websocket、flask-socketio、flask不出现running on 127..问题)

前言 本文旨在记录使用Flask框架过程中与前端Vue对接过程中&#xff0c;存在WebSocket总是连接失败导致前端取不到数据的问题。以及在使用WebSocket相关功能的库包gevent-websocket之后&#xff0c;导致运行Flask项目之后&#xff0c;控制台没有显示running on 127.0.0.1:5000…

Vue复刻华为官网(三)

文章目录1 底部列表1.1 思路1.2 代码1.3 效果图1.3.1 搜索框1.3.2 商标2 公司信息2.1 思路2.2 代码2.3 效果图3 上升按钮3.1 思路3.2 代码3.3 效果图4 图标完善4.1 思路4.2 安利图标库1 底部列表 1.1 思路 如上图&#xff0c;这整个的大盒子&#xff0c;又可以被分为上中下三个…

[JavaScript你真的以为这么简单吗]JavaScript高级

✅作者简介&#xff1a;大家好,我是Philosophy7&#xff1f;让我们一起共同进步吧&#xff01;&#x1f3c6; &#x1f4c3;个人主页&#xff1a;Philosophy7的csdn博客 &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大…

three.js中坐标系转换以及camera的position、lookAt与up属性理解

为了更好的理解camera的position、lookAt与up属性&#xff0c;文章最开始我们先来阐述three.js的坐标系转换的概念。 1.监听event的事件获得屏幕坐标 文章的最开始首先讨论在哪里进行点击事件的监听的问题&#xff0c;当鼠标触发点击事件时&#xff0c;event会输出点击位置相对…

使用JS监听键盘按下事件

事件说明 我们将键盘按下后事件的所有属性和方法打印出来&#xff08;这里以按下1为例&#xff09; document.onkeydown function(event){console.log(event);} 这里面有几个需要注意的属性 key:按下按键的名称 keyCode:按下按键的键码 altKey、ctrlKey、shiftKey&#xf…

Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(项目演示、涉及知识点、源码分享)

基于 Vue3.x Vant UI 的多功能记账本&#xff08;一&#xff09; 文章目录基于 Vue3.x Vant UI 的多功能记账本&#xff08;一&#xff09;Vue3.x 实现多功能记账本1、前言2、项目演示3、涉及知识点4、写到最后&#xff08;附源码&#xff09;Vue3.x 实现多功能记账本 1、前…

文件在线浏览之微软office在线预览及隐藏的坑和其他更优解决办法

一 微软也已经免费提供在线版本office预览啦 https://view.officeapps.live.com/op/view.aspx?srcURLsrc后面的URL是网上能访问到的文件地址&#xff0c;比如http://abc.com/file/demo.xlsx 直接访问&#xff1a;https://view.officeapps.live.com/op/view.aspx?srchttp:/…

js模板字符串

js模板字符串模板字符串&#xff08;模板字面量&#xff09;在模板字符串中插入变量在模板字符串中插入表达式模板字符串中可以换行模板字符串中可以调用函数模板字符串支持嵌套使用模板字符串&#xff08;模板字面量&#xff09; ES6 中引入了模板字符串&#xff0c;让我们省…

Vue3 + vite 创建项目

项目创建 vite的介绍 首先要想使用vite来创建一个vue项目&#xff0c;要把vue脚手架升级成为5.0.1版本&#xff0c;但是有一个很大的缺陷&#xff0c;就是升级过后不会再向下兼容vue2的语法创建项目的方式 脚手架升级为5.0.1版本&#xff1a;cnpm install vuenext 或 yarn gl…

Redux最新实践指南之Redux-Toolkit

前言 redux-toolkit是目前redux官方推荐的编写redux逻辑的方法&#xff0c;针对redux的创建store繁琐、样板代码太多、依赖外部库等问题进行了优化&#xff0c;官方总结了四个特点是简易的/有想法的/强劲的/高效的&#xff0c;总结来看&#xff0c;就是更加的方便简单了。 从官…

vue-treeselect 的基本使用

官网地址&#xff1a;Vue-Treeselecthttps://vue-treeselect.js.org/公司用 若依 搞了一个速成项目&#xff0c;若依是一个免费开源的前后端项目&#xff0c;感兴趣的朋友百度。 在里边接触到了一个神奇的东西 &#xff1a;vue-treeselect&#xff0c;用起来真的是一言难尽&am…

uniapp全局弹窗(APP端)

uniapp自带的提示框不符合我们的要求&#xff0c;需要自己写一个提示框&#xff0c;且全局通用。 解决思路: 使用 plus.nativeObj 来绘制窗口以及事件监听。 官方文档 1. 首先创建一个整个屏幕的控件&#xff0c;作为一个父容器。 此时还看不到任何东西 let screenHeight…

牛客网前端刷题(二)

还在担心面试不通过吗?给大家推荐一个超级好用的刷面试题神器:牛客网,里面涵盖了各个领域的面试题库,还有大厂真题哦! 赶快悄悄的努力起来吧,不苒在这里衷心祝愿各位大佬都能顺利通过面试。 面试专栏分享,感觉有用的小伙伴可以点个订阅,不定时更新相关面试题:面试专栏…

微信小程序之开发遇到 does not have a method “xxxx“ to handle event “tap“ 问题的解决方案【已解决】

今天在开发一个小功能&#xff0c;copy了之前写的代码&#xff0c;但是在实现功能时&#xff0c;出现了如下问题&#xff1a; 先在这简单总结一下解决方案&#xff1a; 在调用方法时&#xff0c;在" "中前后多加了空格&#xff1b;在 js 中没有定义该方法&#xff1…

纯前端导出表格

前端 excel 表格导出 我们习惯了后端去处理表格&#xff0c;直接接口返回 &#xff0c;那前端如何轻松的导出表格呢&#xff1f; 文章目录前端 excel 表格导出Ⅰ. 通过 js-xlsx ⭐⭐⭐⭐⭐安装① vue2 中使用② vue3 中使用③ react 中使用Ⅲ. 通过 vue-json-excel ⭐⭐安装使…