深入解析vuex,让你的vue应用更加高效

前端学习(2623):Vuex初步识别 Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension (opens new window),提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。 # 什么是“状态管理模式”? 让我们从一个简单的 Vue 计数应用开始: new Vue({ // state 阅读详情

前言

说到 vuex 相信大家都不陌生,vuex 是一个专为 vue.js 应用程序开发的状态管理模式。vuex 背后的基本思想,就是单向数据流。今天我们就来好好聊聊 vuex。

在这里插入图片描述


vuex?

用官方的话来说,vuex 是一个专为 vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。


状态管理?

状态就是数据。状态管理可以简单理解为把需要多个组件共享的变量全部存储在一个对象里面。然后将这个对象放在顶层的 vue 实例中,让其他组件可以使用。通过使用 vuex 可集中管理组件之间的数据(状态),使组件之间的数据共享变得简单。


如何安装 vuex?

1. 通过 npm 方式安装。

npm i vuex --save
npm i vuex@3.6.2 --save //安装特定版本
yarn add vuex //yarn安装方式

2. 在 main.js 中引入,然后挂载到 Vue 实例里。

import Vue from 'vue'
import store from './store'
new Vue({
  render: h => h(App),
  store
}).$mount('#app')

3. 在 scr 目录下创建一个 store/index.js 文件,写入以下内容。

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const state = {}
const getters = {}
const mutations = {}
const actions = {}

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

vuex 的核心

一、state

state 简单来说就是一个状态,用户界面会随着 state 变化而变化。


栗子:

store/index.js 文件

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const state = {
  name: "金闯",
  age: 18,
  count: 0
}
const getters = {}
const mutations = {}
const actions = {}

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

任意 .vue 文件中使用

<template>
  <div>
    <h5>姓名:{{$store.state.name}}</h5>
    <h5>年龄:{{$store.state.age}}</h5>
    <h5>工龄:{{$store.state.count}}</h5>
  </div>
</template>

页面效果

在这里插入图片描述

使用语法糖辅助函数(mapState)⤵


二、getter

getter 就是一个计算属性。对 state 数据进行计算(会被缓存),类似于 vue 组件中的 computed,对 state 里的数据进行一些过滤、改造等等,例如我们要在 state.count 的基础上派生出一个新的状态 newCount 出来,就适合使用 getter 属性。


栗子:

store/index.js 文件

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const state = {
  count: 5
}
const getters = {
  newCount: state => state.count * 6
}
const mutation = {}
const actions = {}

export default new Vuex.Store({
  state,
  getters,
  mutation,
  actions,
})

任意 .vue 文件中使用

<template>
  <div>{{newCount}}</div>
</template>
<script>
export default {
  computed: {
    newCount() {
      return this.$store.getters.newCount;
    },
  },
};
</script>

页面效果

在这里插入图片描述

使用语法糖辅助函数(mapGetters)⤵


三、mutation

mutation 就是改变状态,唯一可修改 state 数据的场所。


栗子:

store/index.js 文件

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const state = {
  count: 0
}
const getters = {}
const mutations = {
  addWay(state, num) {
    state.count = state.count + num;
    console.log(state.count);
  },
  minusWay(state) {
    state.count--;
    console.log(state.count);
  },
}
const actions = {}

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

任意 .vue 文件中使用

<template>
  <div>
    <el-button @click="addOn">加</el-button>
    <el-button @click="minusOn">减</el-button>
  </div>
</template>

<script>
export default {
  methods: {
    addOn() {
      this.$store.commit("addWay", 1); //每次+1
    },
    minusOn() {
      this.$store.commit("minusWay");
    },
  },
};
</script>

页面效果

在这里插入图片描述

使用语法糖辅助函数(mapMutations)⤵


四、action

action 就是一个异步操作,提交 mutation 执行异步操作(不是直接变更状态)。主要是用来解决异步流程来改变 state 数据。因为 mutation 是同步操作,如果你在 mutation 里进行异步操作,你会发现并不会起任何效果,故只能通过 action=>mutation=>state 流程修改。


栗子:

store/index.js 文件


import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const state = {
  count: 0
}
const getters = {}
const mutations = {
  minusWay(state) {
    state.count--;
    console.log(state.count);
  },
}
const actions = {
  asyncAdd(context) {
    setTimeout(() => {
      context.commit("minusWay")
    }, 500)
  }
}

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

任意 .vue 文件中使用

<template>
  <div>
    <el-button @click="minusOn">减</el-button>
  </div>
</template>

<script>
export default {
  methods: {
    minusOn() {
      this.$store.dispatch("asyncAdd"); //dispatch触发action函数
    },
  },
};
</script>

页面效果

在这里插入图片描述

使用语法糖辅助函数(mapActions)⤵


五、modules

vuex 允许我们将 store 分割到模块。目的是为了让代码更好维护,让多种数据分类更加明确,每个模块都拥有独立的 state、mutation、action、getter ,甚至是嵌套子模块从上至下进行类似下面的拆分:

const moduleA = {
  state: {},
  mutations: {},
  actions: {},
  getters: {},
}

const moduleB = {
  state: {},
  mutations: {},
  actions: {},
  getters: {},
}

const store = new Vue.store({
  modules: {
    moduleA,
    moduleB
  }
})

vuex 辅助函数(语法糖)

辅助函数可以把 vuex 中的数据和方法映射到 vue 组件中。达到简化操作的目的。


一、mapState(state)

栗子:

<template>
  <div>
    <!-- 直接使用 -->
    <h5>姓名:{{name}}</h5>
    <h5>年龄:{{age}}</h5>
    <h5>工龄:{{count}}</h5>
  </div>
</template>
<script>
import { mapState } from "vuex"; //从vuex中按需导入mapstate函数
export default {
  // 辅助函数使用
  computed: {
    ...mapState(["name", "age", "count"]),
  },
};
</script>

二、mapGetters(getter)

栗子:

<template>
  <div>{{newCount}}</div>
</template>
<script>
import { mapGetters } from "vuex"; //从vuex中按需导入mapGetters函数
export default {
  computed: {
    ...mapGetters(["newCount"]),
  },
};
</script>

三、mapMutations(mutation)

栗子:

<template>
  <div>
    <el-button @click="addOn">加</el-button>
    <el-button @click="minusOn">减</el-button>
  </div>
</template>
<script>
import { mapMutations } from "vuex"; //从vuex中按需导入mapMutations函数
export default {
  methods: {
    ...mapMutations(["addWay", "minusWay"]),
    addOn() {
      this.addWay(1); //直接调用
    },
    minusOn() {
      this.minusWay();// 直接调用
    },
  },
};
</script>

四、mapActions(action)

栗子:

<template>
  <div>
    <el-button @click="minusOn">减</el-button>
  </div>
</template>
<script>
import { mapActions } from "vuex"; //从vuex中按需导入mapActions函数
export default {
  methods: {
    ...mapActions(["asyncAdd"]),
    minusOn() {
      this.asyncAdd(); // 直接调用
    },
  },
};
</script>
C++动态规划详解 动态规划思想 一、动态规划概念: 动态规划(dp)是研究多步决策过程最优化问题的一种数学方法。在动态规划中,为了寻找一个问题的最优解(即最优决策过程),将整个问题划分成若干个相应的阶段,并在每个阶段都根据先前所作出的决策作出当前阶段最优决策,进而得出整个问题的最优解。即记住已知问题的答案,在已知的答案的基础上解决未知的问题。 在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后 阅读详情

相关推荐

陀螺仪及四元数解算

陀螺仪 四元数

zb313982521的博客 2003

Vue、Vuex小总结

目录 1.0 Vue 1.1 vue的原理 1.2 vue的生命周期 2.0 Vuex 2.1 vuex的核心内容 2.2 vuex的工作流程图 2.3规范目录结构 3.0 Vue-router 1.0 Vue 1.1 vue双向绑定原理 参考: 【Vue系列】深入探究vue框架的双向绑定底层原理_小柒很爱喵的博客-优快云博客 Vue2.0与Vue3.0双向绑定的比较_小柒很爱喵的博客-优快云博客 1.2 vue的生命周期 每个 Vue 实例在被创建时都要经过一系列的初

weixin_41950078的博客 1629

从原理到代码:一文搞懂LFM信号脉冲压缩在Matlab中的实现

本文深入解析了LFM信号脉冲压缩的核心原理与Matlab实现方法。从线性调频信号的数学表达、时频特性入手,详细讲解了如何构建多目标回波仿真环境,并重点阐述了匹配滤波器的频域实现算法。文章提供了完整的、可运行的Matlab代码,涵盖信号生成、噪声添加、脉冲压缩及性能评估等关键步骤,并探讨了加窗处理、参数选择等工程实践中的考量,为雷达信号处理的学习与实践提供了清晰指南。

weixin_29063035的博客 414

大白话讲vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

lans_g的博客 989

【侯俊霞全网最全收集--PLC1200/200SMART(88+93课时) 第1章】

第1章:零基础快速入门西门子S7-1200

问就ycy的博客 2030

vivado中出现ERROR: [Labtools 27-2220]检测不出开发板

这个错误可能是由于 Vivado 工具中的 cs_server.exe 文件没有正确安装或者文件路径不正确导致的。你可以尝试以下步骤来。时间: 2023-08-16 12:05:50 浏览: 767。希望以上方法能够帮助你。

qq_40510975的博客 2384

Vue/Vuex入门、Vuex 介绍 Vuex是什么 Vuex说明总结、Vuex主要五个内容

使用vuex是因为项目变得复杂之后 有很多数据需要在父组件、子组件和孙组件之间传递、处理起来很繁琐

m0_64494670的博客 308

某银行大数据分析平台之云原生架构

软考架构师论文

doudoudouy的博客 768

Vuex详解,一文彻底搞懂Vuex

其中参数state参数是必须的,也可以自己传递一个参数,如下代码,进行计数器的加减操作,加法操作时可以根据所传递参数大小进行相加,减法操作没有传参每次减一。

m0_67401746的博客 3159

【计算机视觉40例】案例08:石头剪刀布手势识别

计算机视觉40例——从入门到深度学习(OpenCV-Python)》在介绍Python基础、OpenCV基础、计算机视觉理论基础、深度学习理论的基础上,介绍了计算机视觉领域内具有代表性的40个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。......

计算机视觉之光 2155

使用 MATLAB/Simulink 构建一个 光伏-储能联合系统接入10kV配电网 的协同控制仿真模型

本教程详细介绍了基于Simulink的光伏-储能联合系统在配电网中的协同控制仿真方法。主要内容包括:系统结构设计(光伏阵列、储能电池、双向变流器等);建模流程(MPPT控制、BMS系统、PCS矢量控制);核心协同控制策略(功率平滑、削峰填谷、电压支撑的三层控制架构);仿真结果分析方法及性能评估指标。教程提供了从组件建模到系统集成的完整指导,并建议了模型预测控制、微网孤岛运行等进阶方向,帮助开发者掌握智能电网的关键仿真技术。通过该模型可实现可再生能源的高效利用与电网稳定运行的平衡。

amy_mhd的博客 214

Vuex 的核心作用深度解析:构建高效可维护的 Vue 应用状态管理体系

Vuex在Vue.js应用开发中发挥着核心作用,通过集中式状态管理解决组件间复杂的状态共享问题。其核心优势包括:1)建立单一数据源,提升代码可维护性;2)通过Mutation确保状态变化的可预测性;3)利用Action处理异步操作,实现逻辑解耦;4)简化跨组件通信;5)支持模块化管理,适应大型项目需求。Vuex的这些特性使其成为构建可维护、可扩展Vue应用的必备工具,有效解决了传统状态管理方式在大型应用中的局限性,为开发者提供了规范化的状态管理方案。

你若盛开,清风自来 1901

【漏洞复现】爱数云盘 Usrm_GetAllUsers 未授权访问漏洞

爱数 AnyShare存在未授权漏洞,未授权的攻击者可以通过该漏洞获取用户名信息。

qq_67810151的博客 3118

Vue2中Vuex的使用状态管理工具

Vuex是一个 Vue 的 状态管理工具,状态就是数据,可以帮我们管理 Vue 通用的数据 (多组件共享的数据),任何组件都可以取到数据使用,特点:共同维护一份数据,数据集中化管理,数据响应式变化, 操作简洁 (vuex提供了一些辅助函数)

weixin_62388064的博客 2209

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

vuex核心内容及重点细节总结

文章目录vuex简介vuex的状态管理vuex几大核心内容state模块mutations模块mutations怎么传递参数mutations提交风格mutations响应规则mutations常量类型细节编程mutations同步函数getters模块Actions模块module模块详细代码store/index.jsHelloWorld.vueApp.vuemutations-types.j...

weixin_43342105的博客 9537

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Vue实战教程】之Vuex状态管理详解

Vuex是一个专为Vue.js应用程序开发的状态管理工具。它采用了集中式存储管理应用的所有的状态,并以相应的规则保证状态以一种可预测的方式发生变化。简单来说,Vuex是一个适用于在Vue项目开发时使用的状态管理工具,如果在一个项目开发过程中频繁的使用组件传参的方式来实现数据的同步,那在项目的扩展、管理和维护方面将是一个灾难。为此,Vue为这些被多个组件频繁使用的数据提供了一个统一管理的工具,即Vuex。

柯晓楠 1578

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

vue3.0(十五)状态管理vuex和pinia

vue3.0(十五)状态管理vuex和pinia

chengcheng9876的博客 1300

快速使用Vuex

Vuex是什么,个人理解是vue.js中集中管理状态的一种模式。官网解释:Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态并以相应的规则保证状态以一种可预测的方式发生变化。 如果构建的应用比较简单,没有必要使用vuex,简单的单向数据流就能满足产品需求,体现单向数据流的简洁性,如下: &...

weixin_33809981的博客 106

vuex概括与使用

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.详细介绍可以参照官网文档https://vuex.vuejs.org/zh/ 下面简单介绍vuex 安装 project>npm install vuex --save 然后就可以在main.js中使用 // The Vue...

小鲍侃java 644

vuex及其使用方法

Vuex 是 Vue.js 框架中用于构建大型单页应用(SPA)的状态管理库。它的核心思想是将组件的状态集中管理,使得状态的变更更加可预测和易于维护。下面我会详细介绍 Vuex 的几个关键概念,并给出一个详细的示例。让我们更深入地探讨 Vuex 及其工作原理。

gt8011的博客 734

Vue-vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

cxy94188的博客 421

Vuex状态管理库实用解析

Vuex状态管理库简介官方解释个人理解一、Vuex安装promise兼容IE二、Vuex分离为外部文件并引入index.js基本结构导入main.js并挂载在vue实例中三、Vuex的五个属性单一状态树1、state2、mutations调用mutations当中的方法3、actions4、getters补充getters中方法的参数传递5、modules 简介 官方解释 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可

pycharm_k的博客 6744

Vuex状态管理详解

什么是Vuex 专门为vue应用程序开发的状态管理模式,采用集中式存储管理应用的所有组件的状态(数据),以相应的规则保证状态以一种可预测的方式发生改变 Vuex的作用(什么样的情况下使用Vuex) 多个视图依赖于同一个状态(数据),来自不同视图的行为需要变更同一状态 Vuex的流程图和操作结构图 假设这个组件需要从后台拿到数据,那么就牵扯到异步操...

229

Vuex的基本介绍及Vuex的五个核心属性

vuex是什么? vuex官网 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,统一管理和维护vue的可变状态。 什么情况下应该使用vuex? 多组件共享状态 多个组件使用同一个数据 任何一个组件发生改变 其他的组件也要跟着发生相应的变化 vuex的五个核心属性 五个核心概念:State、Getter、Action、Mutation、Module 一、State state...

JiaYouAiJing的博客 1500

Vuex基本理解

Vuex:集中式存储管理,是一个状态管理工具。 说白了就是需要把多个组件共享的变量全部储存再一个对象里面,然后把这个对象放到顶层vue实例中,让其他组件可以使用,而且Vuex还是响应式,灵活性高。 这时候问题来了!管理啥状态呢? 一般来说 不能所有状态都放进Vuex,这样会使程序变得特别臃肿,比如用户的登陆状态,用户名称,头像,地理位置信息等可以放入。 ...

q879936814的博客 489

Vuex笔记

Vuex笔记 1.Vuex概述 Vuex是实现全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享。 使用Vuex的好处: (1)能够在vuex中集中管理共享的数据,易于开发和后期维护, (2)能够高效地实现组件之间的数据共享,提高开发效率 (3)存储在vuex中的数据都是响应式的,能够实时保持数据与页面的同步 哪些数据适合存储到vuex中? 一般来讲,只有组件之间共享的数据才有必要存储到vuex中对于组件的私有数据,依旧存储于组件自身的data中即可。 2.Vuex的基本使用 (1)安装vu

weixin_43274526的博客 169
上一篇: 又省时间又省心,微信小程序记住密码功能大揭秘
下一篇: 一分钟带你上手JS对象的基本用法
水星记_
水星记_ 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄6年 13万+粉丝 212原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水星记_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值