Vuex 学习

2023-05-16

  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中的方法

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vuex 学习 的相关文章

  • 如何更新 vue.js 2 上输入类型文本中的值?

    我的刀片 Laravel 视图如下
  • 未捕获的 FirebaseError:使用无效数据调用函数 DocumentReference.set()。不支持的字段值:未定义

    我正在使用 Vue 和 Firebase 创建电子商务 尝试添加当前登录用户的一些购物车信息 奇怪的是 第一次信息保存得很好 当我尝试再次添加一些时 那不起作用并显示此错误 未捕获的 FirebaseError 使用无效数据调用函数 Doc
  • Vuex如何处理api错误通知?

    两周前我开始使用 Vuex 我意识到 Vuex 非常适合处理应用程序的状态 但是 API调用的错误很难处理 当我从服务器获取数据时 我会调度一个操作 当数据成功返回后 当然一切都好了 但是当错误发生时 我改变了状态 我不知道如何通过Vuej
  • Nuxt.js:开始从 vuex 加载指示器

    根据文档 有一种方法可以在组件中手动启动 nuxt 加载指示器 如下所示 export default methods startLoading this root loading start 有没有办法从 vuex 操作切换加载器 我怎样
  • Vuex Store 模块访问状态

    我想知道如何从另一个文件访问模块存储 状态 到目前为止 这是我的代码 store index js import Vuex from vuex import categories from modules categories Vue us
  • 为动态创建的组件分离 vuex 存储

    这个问题让我有点卡住了 不幸的是 我在这里找不到答案 问也没有帮助 因此 在做了一些研究并到处询问之后 似乎我找到了这个问题的解决方案 如果您有一个已经知道答案的问题 并且您 希望公开记录这些知识 以便其他人 包括你自己 稍后可以找到它 当
  • 如何从 vue-router 访问 vuex getter 并设置守卫?

    我正在尝试使用 Vue 进行操作 但遇到了一些麻烦 1 我无法从 router index js 文件访问我的 getters 我可以访问它 但它像带有返回函数的函数一样返回 我无法调用并获取值 2 我无法正确设置守卫 使用 Angular
  • Vuex axios调用无法处理422响应

    我正在尝试处理来自 API 的 422 响应 以防在进行异步 Axios 调用时数据无效 在组件中 我有一个类似的方法 async saveChanges this isSaving true await this store dispat
  • Vuex 存储在 NUXT 中间件中未定义

    我正在练习 NUXT 从教程来看它运行良好 我的在进入NUXT中间件时失败 逻辑是 如果页面重定向到其他页面 它将进入中间件并使用 axios 获取结果 中间件 search js import axios from axios expor
  • 如何在Vuex中深度克隆状态并回滚?

    在 Vuex 中 我想拍摄树中对象属性的快照 克隆 修改它 然后可能回滚到以前的快照 背景 在应用程序中 用户可以在应用某些更改之前尝试它们 应用更改时 它们应该影响主 vuex 树 用户还可以单击 取消 放弃更改并返回到之前的状态 Exa
  • Vuex - 绑定助手中的动态命名空间(mapState,...)

    我正在动态注册 vuex 存储模块 store registerModule home grid GridStore 然后在组件中 export default name GridComponent props namespace type
  • 访问嵌套对象时 Vue 发出警告

    我不知道为什么在访问嵌套对象时会收到 Vue 警告 user area name Vue warn 渲染错误 TypeError 无法读取未定义的属性 名称 类型错误 无法读取未定义的属性 名称 仅访问该对象没有任何警告 user name
  • 如何防止 Vuex 干扰我的类实例?

    我试图在 Vuex 中存储一个类的实例 EditorState https prosemirror net docs ref state EditorState来自散文镜 这个类从外部来看或多或少是不可变的 这意味着每当我想对其进行更改时
  • Vuex:跳过操作并直接从组件提交突变

    在 vue js 应用程序中 使用 vuex 作为状态管理存储 我只需更改 vuex 中属性的值 为此 我可以采用两种方法 派遣action方法 这将进一步提交mutation 最终会改变状态 第二种方法是提交mutation直接来自组件
  • vue动态mapGetters

    我有一个 props 我想用它来制作动态 mapGetters 但是 mapGetters 将 props 视为未定义 可能是因为计算值是在 props 之前加载的 有人知道我怎样才能让它变得动态吗 我的代码如下 export defaul
  • 在 vue 组件上提交表单时如何获取单选按钮的值?

    我有两个组件 我的第一个组件是这样的
  • 我可以在 Vuex 中从 getter 进行调度吗

    小提琴 here https jsfiddle net 9a6Lg2vd 6 我正在使用 Vue 2 和 Vuex 创建一个 web 应用程序 我有一个商店 我想从 getter 获取状态数据 我想要的是如果 getter 发现数据尚未填充
  • 在Vuex模块中进行继承的方法

    我使用 VueJS 和 Vuex 构建我的应用程序 当我有多个模块使用相同的数据字段时 我遇到了这个问题 它是关于像 dat 这样的 API 配置 getUsers state commit axios get urls API USER
  • Vue - API 调用属于 Vuex 吗?

    我正在努力寻找在 vue 模块中理想的 API 调用位置的答案 我不是在构建 SPA 例如 我的 auth 块有几个用于登录 密码重置 帐户验证等的组件 每个块都使用 axios 进行 API 调用 Axios 已经提供了异步的 Promi
  • 访问 nuxt 配置文件中的存储

    我想添加通过 Nuxt 静态生成的动态路由 我定义了一个客户端 服务器端存储asyncData方法 我想将这个存储值 一个数组 映射到我的nuxt config js文件使其成为 动态 静态 路线图nuxt generate命令 但如何访问

随机推荐

  • 自己实现strcat函数

    问题描述 xff1a 自己实现一个MyStrcat函数 xff0c 要和C语言库函数的strcat函数完成同样的功能 问题分析 xff1a 首先我们要了解一下strcat函数它到底做了什么事情 1 函数原型 char strcat char
  • 简易文件打包程序

    对指定目录下面的文件进行打包 简易解包程序参考博客另外一篇文章 xff1a http blog csdn net yi ming he article details 77689453 打包方式 xff1a 把目录下面的文件名 xff0c
  • 简易解包程序

    对压缩包进行解压 简易压缩程序请参考博客的另外一篇文章 xff1a http blog csdn net yi ming he article details 77689405 解包方式 xff1a 根据打包建立的索引表 xff0c 找到对
  • linux 挂载错误Transport endpoint is not connected

    mount了mfs后 xff0c 重新挂载之后 xff0c 出现如下错误 xff1a usr local mfs bin mfsmount H 192 168 103 101 mnt fuse bad mount point 96 mnt
  • 新字体的永久注册

    CString GetCurrentModuleDir TCHAR szPath MAX PATH 43 1 61 0 if 0 61 61 GetModuleFileName HMODULE amp ImageBase szPath MA
  • yolov5/v7/v8自动检测多个文件夹及截取锚框

    目前yolo仅支持检测图片或单个文件夹 xff0c 但在很多时候需要对成百上千个文件夹中图片进行检测 xff0c 再根据得到的位置信息txt文件来截取图片 xff0c 如何一步完成呢 xff0c 详情见下文 在detect py中将save
  • 带参数的宏定义、函数与内联函数

    文章目录 前言一 宏定义1 基本用法2 带参数的宏定义 二 函数1 定义与声明2 调用 三 内联函数 inline总结 前言 在实际项目开发 xff0c 尤其是嵌入式软件项目中 xff0c 经常可以看到大量宏定义的分布 xff0c 其中又多
  • C++语言为什么跨平台?

    xfeff xfeff 现在主流的手机平台很多 xff0c 比如 xff1a Windows开发的Windows Phone xff08 WP 34 X 34 xff09 Apple 苹果公司 开发的ios xff0c Google 谷歌
  • CMake 中的list操作

    Cmake 中定义了一系列的数组操作 xff0c 使用方法如下 list INSERT lt list gt lt element index gt lt element gt lt element gt list REMOVE ITEM
  • 解决error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such file

    原文转自CSDN xff0c 本文有删减 一 问题 运行hydra时 xff0c 提示错误 xff1a hydra error span class hljs keyword while span loading span class hl
  • 栈(超简单讲解版

    没错又是我来了 xff08 上一篇DFS还没写好就先来写队列与栈了哈哈哈哈 是很简单的内容呢 xff08 比DFS简单到哪里去了 先来认识一下栈 什么是栈 xff1f 度娘是这样说的 xff1a 栈 xff08 stack xff09 又名
  • ROS下使用stm32 与rosserial进行通信的开发说明及源代码示例

    关于stm32下的ROS开发环境介绍说明 xff0c 此开发环境是在Linux下使用stm32的标准库 STM32F10x StdPeriph Driver3 5 xff0c 进行stm32开发 xff0c 整体开发框架已搭建完成 xff0
  • 【ROS Rikirobot基础-使用系列 第四章节】Rikirobot小车使用激光雷达进行自动导航

    利用激光雷达进行自动导航 这里我们教大家使用的是利用激光雷达导航 xff0c 关于深度摄像头的导航我们后面会教大家使用 1 上电启动小车 xff0c 主控端执行启动小车的命令 xff1a roslaunch rikirobot bringu
  • js函数的四种调用形式以及this的指向

    以函数的 形式调用 xff1a function fun alert this 61 61 window fun 调用成功 xff0c this代表window 以方法的形式调用 var obj 61 name 61 34 hello 34
  • warning: control reaches end of non-void function

    用gcc编译一个程序的时候出现这样的警告 xff1a warning control reaches end of non void function 它的意思是 xff1a 控制到达非void函数的结尾 就是说你的一些本应带有返回值的函数
  • 项目中遇到的问题及解决方案

    1 用到的视频播放插件只支持加载相对路径 xff0c 不能加载绝对路径上的资源 解决方案 xff1a 为tomca t配置 文件 创建索引 xff0c 在 server xml文件中增加配置 lt Context path 61 34 IM
  • Oracle批量更新sql写法

    select from test table for update begin for cur in select id from test table loop update test table set name 61 39 苏晓伟 3
  • JVM 垃圾回收机制

    JVM体系结构概览 xff1a 垃圾回收 xff08 GC xff09 发生在哪个区 xff1a heap xff08 堆 xff09 区 GC是什么 xff1f 分几种 xff1a GC 分代收集算法 次数上频繁收集young区 xff0
  • JAVA 自定义注解

    多说无益 xff0c 直接上代码 import java lang annotation Documented import java lang annotation ElementType import java lang annotat
  • Vuex 学习

    什么是vuex xff1a 专门在Vue中实现集中式状态 xff08 数据 xff09 管理的一个Vue插件 xff0c 对vue应用中多个组件的共享状态进行集中式的管理 xff08 读 写 xff09 xff0c 也是一种组件间通信的方式