Vuex状态管理

2023-10-31

1.vuex是什么

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。集中式存储管理应用的所有组件的状态

简单的状态管理模式

--state 驱动应用的数据源;
--view 以声明方式将 state 映射到视图;
--actions 响应在 view 上的用户输入导致的状态变化。

2.Store

每一个 Vuex 应用的核心就是 store(仓库)“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。

Vuex 和单纯的全局对象有以下两点不同: 

1.Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候, 若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。 

2.不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。 这样使得我们可以方便地跟踪每一个状态的变化

3.安装

npm install vuex --save

必须显式地通过Vue.use() 来安装 Vuex:

//main.js
import Vuex from 'vuex' 

Vue.use(Vuex) 

new Vue({
   el: '#app',   
   store,  //实例化   
   router,
   components: { App },
   template: '<App/>' 
})

4.创建store.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
export default new Vuex.Store({
    state:{
        count:0,
        name:'joker'
    },
    mutations:{
        add(state) {
            state.count++
        },
        updateName(state,name){
            state.name = name
        }
    },
    actions:{
        addNAsync(context){
            setTimeout(()=>{
                context.commit('add')
            },1000)
        }
    },
    getters:{
        showNum(state){
            return '当前的数据是:'+state.count
        }
    }
})



--由于 store 中的状态是响应式的,在组件中调用 store 中的状态简单到仅需要在计算属
  性中返回即可。触发变化也仅仅是在组件的 methods 中提交 mutation。

5.关键字

State(单一状态树)

1.Vuex 使用单一状态树,
2.用一个对象就包含了全部的应用层级状态。至此它便作为一个“唯一数据源 (SSOT)”而存在。
3.存储在 Vuex 中的数据和 Vue 实例中的 data 遵循相同的规则

mapState 辅助函数
import { mapState } from 'vuex'

Mutation

1.更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。
2.Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。
3.Vuex 中的 mutation 也需要与使用 Vue 一样遵守一些注意事项:
4.Mutation必须是同步函数

mapMutation 辅助函数
import {mapMutations} from 'vuex'

Action

1.Action 类似于 mutation
2.Action 提交的是 mutation,而不是直接变更状态。
3.Action 可以包含任意异步操作。
4.可以调用 context.commit 提交一个 mutation,
  或者通过 context.state 和 context.getters 来获取 state 和 getters。
  
mapAction 辅助函数
import {mapActions} from 'vuex'

Getter

1.Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。
2.getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

mapGetter 辅助函数
import { mapGetters } from 'vuex'

Module

1.Vuex 允许我们将 store 分割成模块(module)
2.每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块

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

Vuex状态管理 的相关文章

随机推荐

  • kl散度学习笔记python实现

    KL Divergence KL Kullback Leibler Divergence中文译作KL散度 从信息论角度来讲 这个指标就是信息增益 Information Gain 或相对熵 Relative Entropy 用于衡量一个分布
  • windows下如何恢复notepad未保存的文件

    notepad恢复未保存的文件 备份文件 C Users 你当前用户的用户名 AppData Roaming Notepad backup可以恢复 如果找不到此文件 因为文件被隐藏了 打开隐藏文件即可
  • tomcat 和 apache跟CGI都有什么关系呢?

    tomcat 和 apache跟CGI都有什么关系呢 IIS和古老的PWS都是win下运行的 web服务程序 对吧 这下边跑的是 asp对吧 这些不会跨平台对吧 web服务程序 是 apache还是tomcat 呢 jsp跟 asp是一种功
  • 简搭(jabdp)快速入门(一)

    一 文件夹说明 本应用包为绿色免安装版本 只需要将本jabdp文件夹复制至系统英文名称目录下即可 mysql目录为默认集成的数据库目录 webapps目录为应用程序所在目录 其中设计器包含ae与iDesigner工程 项目平台包含iPlat
  • JAVA 内部类 inner class

    内部类 在一个类的内部定义的类称为内部类 类的内部 第一 与属性或方法 同级 内部类 这个类与外部类的每个对象是一对一的关系 Person与Birthday 静态内部类 这个类与外部类是1对1的关系 每个对象共享这个内部类对象 Hero和C
  • 编程实用工具大全(二)(前后端皆可用,不来看看?)

    个人主页 个人主页 系列专栏 精品推荐 由于之前编程实用工具大全深受大家喜欢 所以出了第二期 对于没有看过第一期的小伙伴 可以点击这个链接 编程实用工具大全 一 目录 1 零代码工具箱 专为前端打造 1 SVG波浪背景生成器 2 在线生成
  • Activity启动流程概述

    总结 Activity的启动过程 我们可以从Context的startActivity说起 其实现是ContextImpl的startActivity 内部调用startActivityForResult 然后内部会通过Instrument
  • Mathpix公式识别OCR软件使用教程

    最近 发现一款公式识别OCR软件 配合Mathtype 公式编辑器 非常好用 省去很多时间 所以就写一篇文章介绍Mathpix的使用方法 1 打开Mathpix软件后 可以鼠标单击下图中小电脑图标进行截图 也可以使用快捷键Ctrl Alt
  • IntelliJ IDEA基于maven构建的web项目找不到jar包

    手把手教你搭建基于Maven的SSM框架 附源代码 SSM框架 详细整合教程 GitHub源码地址 SSM整合框架 基于maven构建的springMVC项目 下载好jar包import后 运行提示ClassNotFoundExceptio
  • 数仓/数据开发-零基础入坑(小白学习路径)

    这段时间各大公司的春招陆续开始了 但是也有很多同学还在因为刚刚入坑或者还在纠结 对学习路径比较迷茫 这也是去年的我 所以这边总结一下 一个面向面试的学习路径 后面也会补充上全面的学习路径 面向面试就是掌握到基本能应付暑期实习面试的基本技能和
  • 论文笔记之CSPNet

    本文解决的是减少推理计算的问题 本文收录于CVPR2019 论文地址 https arxiv org pdf 1911 11929 pdf 1 摘要 目前最先进的能够在计算机视觉任务上取得非常好的结果的方法往往很大程度上依赖于昂贵的计算资源
  • Window Server IIS日志导入到SQL Server查看

    配置ODBC log日志可以导出到提供ODBC访问接口的数据库查看 控制面板 ODBC 添加DSN gt SQL Server 起个名称 随意命名 下一步 选择数据库 下一步 默认就行 点完成 测试数据源 点击确定 点击应用 确定 打开lo
  • Error:Could not create the Java Virtual Machine. Error:A Fatal exception has occurred错误解决

    问题情况 出现以上情况 可以通过以下方式进行解决 1 判断机子是否安装了Java环境 确定自己已经设置环境变量 如JAVA HOME CLASSPATH PATH 2 有些程序会有内存设置 有些程序内存设置过大时 超过虚拟机的范围会报错 3
  • 剑指offer——剪绳子

    题目描述 给你一根长度为n的绳子 请把绳子剪成整数长的m段 m n都是整数 n gt 1并且m gt 1 每段绳子的长度记为k 0 k 1 k m 请问k 0 xk 1 x xk m 可能的最大乘积是多少 例如 当绳子的长度是8时 我们把它
  • Backtrader量化&回测5——交易情况跟踪&生成策略每日交易报告

    这一部分的API可以参考官网 https www backtrader com docu strategy Backtrader的策略中有四个常用的函数 notify order order 订单状态变化时会触发这个函数 notify tr
  • get请求传参 数组

    假设现在有数组arr 1 2 axios中如果直接使用数组传参 会出现参数中数组变成arr 1 arr 2的情况 实际上后端需要的是arr 1 arr 2的效果 这个时候可以使用axios里面的qs 导入 import qs from qs
  • 数据中心如何助力大数据、区块链、人工智能结合应用,推动数字经济发展?

    同属新基建重点点名发展的技术高地 大数据 区块链 人工智能之间有联系吗 数据中心如何承担技术底座的作用 以促进这些新兴技术的结合发展和应用 继而推动数字经济的发展 用人体来比喻 我们人类的各个器官感知世间万物的一切 大数据 经过人体经络 区
  • 2019年国赛高教杯数学建模E题薄利多销分析解题全过程文档及程序

    2019年国赛高教杯数学建模 E题 薄利多销分析 原题再现 薄利多销 是通过降低单位商品的利润来增加销售数量 从而使商家获得更多盈利的一种扩大销售的策略 对于需求富有弹性的商品来说 当该商品的价格下降时 如果需求量 从而销售量 增加的幅度大
  • 解决 Error querying database. Cause: java.sql.SQLException: sql injection violation....

    解决 Error querying database Cause java sql SQLException sql injection violation 最近在开发的时候老板的需求就是将模糊搜索和PageHelper 结合起来将数据显示
  • Vuex状态管理

    1 vuex是什么 Vuex 是一个专为 Vue js 应用程序开发的状态管理模式 集中式存储管理应用的所有组件的状态 简单的状态管理模式 state 驱动应用的数据源 view 以声明方式将 state 映射到视图 actions 响应在