vuex笔记

news2024/11/24 6:02:09

Vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式

调试工具:vue devtools

Vuex就像眼镜:您自会知道什么时候需要它。

1、state

在store中定义数据,在组件中直接使用:

目录:store/index.js

export default new Vuex.Store({
    // state相当于组件中的data,专门用来存放全局的数据
    state: {
        num: 0
    },
    getters: {},
    mutations: {},
    actions: {},
    modules: {}
})

目录:Home.vue

<template>
  <div class="home">
    <h2>Home页面的数字:{{$store.state.num}}</h2>
  </div>
</template>

<script>
export default {
  
}
</script>

或者写为:

<template>
  <div class="about">
    <h2>About页面的数字:{{num}}</h2>
  </div>
</template>

<script>
export default {
  computed: {
    num(){
      return this.$store.state.num
    }
  }
}
</script>

2、getters

将组件中统一使用的computed都放到getters里面来操作

目录:store/index.js

export default new Vuex.Store({
    // state相当于组件中的data,专门用来存放全局的数据
    state: {
        num: 0
    },
    // getters相当于组件中的computed,getters是全局的,computed是组件内部使用的
    getters: {
        getNum(state) {
            return state.num
        }
    },
    mutations: {},
    actions: {},
    modules: {}
})

目录:Home.vue

<template>
  <div class="home">
    <h2>Home页面的数字:{{$store.getters.getNum}}</h2>
  </div>
</template>

<script>
export default {
  
}
</script>

3、mutations

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。

目录:store/index.js

export default new Vuex.Store({
    // state相当于组件中的data,专门用来存放全局的数据
    state: {
        num: 0
    },
    // getters相当于组件中的computed,getters是全局的,computed是组件内部使用的
    getters: {
        getNum(state) {
            return state.num
        }
    },
    // mutations相当于组件中的methods,但是它不能使用异步方法(定时器、axios)
    mutations: {
        // 让num累加
        // payload是一个形参,如果组件在commit时,有传这个参数过来,就存在,如果没有传过来,就是undefined
        increase(state, payload){
            state.num += payload ? payload : 1;
        }
    },
    actions: {},
    modules: {}
})

目录:Btn.vue

<template>
    <div>
        <button @click="$store.commit('increase', 2)">点击加1</button>
    </div>
</template>
<script>
export default {
   methods: {
       /* addFn(){
           // 调用store中的mutations里的increase方法
           // 传参的话,使用payload
           this.$store.commit('increase', 2)
       } */
   }
}
</script>

4、actions

actions是store中专门用来处理异步的,实际修改状态值的,还是mutations

目录:store/index.js

// 在store(仓库)下的index.js这份文件,就是用来做状态管理
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
    // state相当于组件中的data,专门用来存放全局的数据
    state: {
        num: 0
    },
    // getters相当于组件中的computed,getters是全局的,computed是组件内部使用的
    getters: {
        getNum(state) {
            return state.num
        }
    },
    // mutations相当于组件中的methods,但是它不能使用异步方法(定时器、axios)
    mutations: {
        // 让num累加
        // payload是一个形参,如果组件在commit时,有传这个参数过来,就存在,如果没有传过来,就是undefined
        increase(state, payload){
            state.num += payload ? payload : 1;
        },
        // 让num累减
        decrease(state){
            state.num--;
        }
    },
    // actions专门用来处理异步,实际修改状态值的,依然是mutations
    actions: {
        // 点击了“减1”按钮后,放慢一秒再执行减法
        decreaseAsync(context){
            context.commit('decrease')
        }
    },
    modules: {}
})

目录:Btn.vue

<template>
    <div>
        <button @click="$store.commit('increase', 2)">点击加1</button>
        <button @click="$store.dispatch('decreaseAsync')">点击延迟减1</button>
    </div>
</template>
<script>
export default {
   methods: {
       /* addFn(){
           // 调用store中的mutations里的increase方法
           // 传参的话,使用payload
           this.$store.commit('increase', 2)
       }
       reduceFn(){
           this.$store.dispatch('decreaseAsync')
       } */
   }
}
</script>

5、辅助函数

mapState和mapGetters在组件中都是写在computed里面

<template>
	<div>
        <h2>Home页面的数字:{{num}}</h2>
        <h2>About页面的数字:{{getNum}}</h2>
    </div>
</template>

<script>
import { mapState, mapGetters } from 'vuex'

export default {
  computed: {
    ...mapState(['num'])
    ...mapGetters(['getNum'])
  }
}
</script>

mapMutations和mapActions在组件中都是写在methods里面

<template>
	<div>
        <button @click="increase(2)">点击加1</button>
        <button @click="decreaseAsync()">点击延迟减1</button>
    </div>
</template>

<script>
import { mapMutations, mapActions } from 'vuex'

export default {
  methods: {
       ...mapMutations(['increase']),
       ...mapActions(['decreaseAsync'])
   }
}
</script>

6、拆分写法

store中的所有属性,都可以拆分成单独的js文件来书写

7、modules

在这里插入图片描述

我们的store可以认为是一个主模块,它下边可以分解为很多子模块,子模块都可以单独领出来写,写完再导入到主模块中。下面以 users 子模块举例:

将mutations中所有的方法,归纳起来。

目录:mutations_type.js

export const MUTATIONS_TYPE = {
    INCREASE: 'increase',
    DECREASE: 'decrease'
}

export default {
    // 让num累加
    // payload是一个形参,如果组件在commit时,有传这个参数过来,就存在,如果没有传过来,就是undefined
    [MUTATIONS_TYPE.INCREASE](state, payload){
        state.num += payload ? payload : 1;
    },
    // 让num累减
    [MUTATIONS_TYPE.DECREASE](state){
        state.num--;
    }
}

目录:store/index.js

import mutations from './mutaions_type'

export default new Vuex.Store({
    ...
    mutations,
    ...
})

组件中:

<template>
  <div class="about">
    <h2>About页面的数字:{{getNum}}</h2>
    <button @click="increase()">About的按钮,点击加1</button>
  </div>
</template>
<script>
import { mapGetters, mapMutations } from 'vuex'
import { MUTATIONS_TYPE } from '@/store/mutaions_type.js'
export default {
  computed: {
    ...mapGetters(['getNum'])
  },
  methods: {
    // 方法一:
    ...mapMutations([MUTATIONS_TYPE.INCREASE])
      
    // 方法二:
    /* increase(){
      this.$store.commit(MUTATIONS_TYPE.INCREASE)
    } */
  }
}
</script>

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

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

相关文章

相关分析与回归分析

相关与回归分析就是了解变量之间相关关系的统计方法 一.相关分析 具有相关关系的变量之间&#xff0c;如果不区分原因和结果&#xff0c;我们称之为相关分析 相关分析是看两个因素之间的相关性&#xff0c;不需要确定哪个是自变量&#xff0c;哪个是因变量&#xff0c;两个因…

RK3568 GT911触摸屏调试

屏幕规格书 需要主要硬件通信电压为&#xff1a;1.8V或者3.3V I2C通信的地址&#xff1a;0x5D 和0x40 系统上电时序&#xff1a;不同的地址&#xff0c;稍微有些差异 对应代码中如下&#xff1a; 与RK3568的硬件接口电路 DTS 配置 驱动&#xff1a;RK自带的驱动程序就可以正确工…

音视频学习 -- 弱网对抗技术相关实践

背景介绍 实时音视频通话在当前的生活中是无时不刻存在的&#xff0c;包括社交、安防、交通等等各个方面都需要。用户场景复杂多变、要求严苛、网络环境不一致等给实时音视频通话带来很大条件。我们在这方向稍微做了一些工作&#xff0c;虽然和其他大厂的优化工作相比&#xf…

Commons Collections3

省流 SerialKiller 可以通过⿊名单与⽩名单的⽅式来限制反序列化时允许通过的 类&#xff0c;其中限制了cc1和cc2中命令执行的类&#xff0c;InvokerTransformer cc3就是为了绕过对其的限制&#xff0c;这里使用的是com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter来…

基于改进的DBN降水预测方法(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 精确高效的降水预测模型可以更好地反映未来的气候&#xff0c;为管理决策提供重要参考&#xff0c;帮助人们为未来的恶劣天气做…

首个元宇宙国家?!# Tuvalu

当我们还在谈论如何设计和构建一个未来城市的时候&#xff0c;首个入驻元宇宙的国家也诞生了。太平洋岛国「图瓦卢」开始 在虚拟世界创建一个数字国家。这是个怎样的国家&#xff1f;图瓦卢是位于南太平洋的一个岛国&#xff0c;人口约为 1.2 万&#xff0c;由 9 个环形小珊瑚岛…

FKM规范静强度和疲劳强度计算分析

1. 概述 WB-FKM/WB-FKM-Weld工具包是德国CADFEM公司基于FKM规范&#xff08;德国机械协会主持和通过的机械产品强度评估规范&#xff09;的基础上&#xff0c;在ANSYS WB内开发的针对结构母材及焊缝进行静强度和疲劳强度评估的工具包。 该工具包的最大优势是&#xff1a;基于AN…

艾美捷CpG ODN系列——ODN 2006 (TLRGRADE)说明

艾美捷CpG ODN系列——ODN 2006 (TLRGRADE)&#xff1a;具有硫代磷酸酯骨架的CpG寡脱氧核苷酸&#xff08;B型&#xff09;。人和小鼠TLR9&#xff08;Toll样受体9&#xff09;的特异性配体。 艾美捷CpG ODN 丨ODN 2006 (TLRGRADE)化学性质&#xff1a; 序列&#xff1a;5-tcg…

减少win11核显占用的内存怎么操作

减少win11核显占用的内存如何操作是很多小伙伴反应的问题&#xff0c;当我们的电脑新安装完win11的时候会发现系统的内存占用比较高&#xff0c;但是自己却没有开任何的占用高的软件&#xff0c;下面小编给大家分享一下减少win11核显占用的内存操作方法吧&#xff0c;以便解决大…

音视频编解码 -- 编码参数 CRF

之前多多少少接触过一些编解码参数&#xff0c;CRF 参数也用过&#xff0c;但是最近在和朋友们聊天时&#xff0c;说到使用 FFMPEG 过程中碰到 CRF 参数&#xff0c;以及具体作用流程&#xff0c;这个之前一直没有跟踪过&#xff0c;也没有详细记录过&#xff0c;所以吊起了自己…

【笔记】计算机组成原理复习重点——篇四

计算机组成原理复习重点笔记 第&#xff14;章 存 储 器 4.1 概述 存储一个二进制位的物理器件叫存储元。地址码相同的多个存储元构成一个存储单元。若干个存储单元构成存储体。多个存储体构成存储器。多个存储器构成存储体系。存储元→存储单元→存储体→存储器→存储体系 4…

pytorch实现运动鞋分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章地址&#xff1a; 365天深度学习训练营-第P5周&#xff1a;运动鞋分类&#x1f356; 作者&#xff1a;K同学啊一、前期准备 1. 设置GPU import torch from torch import nn imp…

Spring Batch 批处理-作业监听器

引言 接着上篇&#xff1a;Spring Batch 批处理-作业增量参数&#xff0c;了解作业参数增量器后&#xff0c;本篇就来了解一下Spirng Batch 作业监听器&#xff0c;看能玩出啥花样。 作业监听器 Spring Batch 步骤/作业的设计延续Spring传统设计模式&#xff0c;加入生命周期…

「Electron|快速开始」来写个Hello World桌面应用吧

本文主要介绍如何快速使用Electron生成一个Hello World应用 文章目录主要步骤一、准备工作创建项目安装electron二、编写electron应用所需的基本内容首先&#xff0c;我们需要给electron应用一个入口创建窗口往窗口里面放一个HTML界面&#xff0c;写上"Hello World!"…

计算机网络技术-常见网络命令

文档下载&#xff1a;https://download.csdn.net/download/weixin_57836618/87294136 实验2 常见网络命令 1. 实验目的与意义 ① 通过实验熟悉与网络相关的组件的含义和用途。 ② 了解系统网络命令的含义、用途和操作方法。 ③ 能够查看网络的状态&#xff0c;对网络进行简…

DEiT实战:使用DEiT实现图像分类任务(一)

DEiT实战摘要安装包安装timm数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集摘要 DEiT是FaceBook在2020年提出的一篇Transformer模型。该模型解决了Transformer难以训练的问题&#xff0c;三天内使用4块GPU&#xff0c;完成了ImageNet的训练&#xff0c;并且没有使用…

mPEG-N3;mPEG-Azide;甲氧基聚乙二醇叠氮CAS:89485-61-0

叠氮化物/叠氮基官能化的甲氧基聚乙二醇&#xff08;mPEG-N3&#xff09;是一种单官能PEG衍生物&#xff0c;可用于修饰蛋白质&#xff0c;肽和其他材料。 叠氮化物基团可以在铜催化的水溶液中与炔烃反应。 也可以容易地还原成胺基。 名称 甲氧基聚乙二醇叠氮 mPEG-N3 别称 甲…

周志华 《机器学习初步》模型评估与选择

周志华 《机器学习初步》模型评估与选择 Datawhale2022年12月组队学习 ✌ 文章目录周志华 《机器学习初步》模型评估与选择一.泛化能力二.过拟合和欠拟合泛化误差 VS 经验误差过拟合 VS 欠拟合三.模型选择的三大问题如何获得测试结果&#xff1a;评估方法如何评估性能优劣&…

工厂设备管理中经常会遇到哪些问题?

我调查过上百家企业的设备管理问题&#xff0c;发现大家认为所有设备管理问题中&#xff0c;最典型的问题主要包括以下五个方面&#xff1a; 1&#xff09;领导不重视管理 “生产量是最重要的”、“销售额是最重要”、“重ERP&#xff0c;轻现场管理”……等管理理念是企业中的…

镜像法的理解——工程电磁场 P9

模型一&#xff1a;无限大导体平面 此处有几点理解需要格外谈一下 1. 只有在有电力线的地方&#xff0c;才会产生电场的作用 2.对于下平面的分析&#xff0c;下平面如果存在电荷的话&#xff0c;必然存在电力线&#xff0c;那么从无穷远处做功到此处&#xff0c;必然会存在电…