Vue中使用Vuex(超详细)基本使用方法

vue中使用vuex,不同的vue版本要对应使用不同的vuex,在这里不做详情介绍,想具体了解的,请自行度娘或者必应一下。

在使用vuex之前,我们创建一个新的项目,这里我们使用的是vue的脚手架创建一个vue项目。

命令vue create muf-simple-vuex-demo

此处我们使用的是vue2的版本,vue版本号为v2.6.14,对用使用的vuex的版本是3.6.2

在这里插入图片描述
src目录下创建一个store文件夹,在store文件夹下创建index.js文件和modules(模块文件夹,为了拓展不同的业务模块使用),在modules文件夹下创建一个settings.js文件,具体目录接口如上图所示。

那么直接贴出代码文件。

store文件夹下创建的index.js文件

import Vue from 'vue'
import Vuex from 'vuex'
import settings from './modules/settings'

Vue.use(Vuex)

// 全局的state
const state = {

}

// 全局的 mutations
const mutations = {

}

// 全局的 getters
const getters = {

}

const store = new Vuex.Store({
  state,
  mutations,
  getters,
  modules: {
    settings,
    // 其他业务更多的模块文件
  },
})

export default store

modules文件夹下创建的settings.js文件

const state = {
  settingObj: {
    version: 'V2.1.3',
    updateTime:'2024-03-29'
  }
}

/**
 * 单一赋值数据:修改对用的数据
 * 1.如果不需要对数据二次加工,直接存的话,可以调用此处的方法;
 * 2.如果需要对数据进行处理,二次加工之后,在存储的话,可以在 actions 内进行数据处理包装
 * 
 * 一、如何使用全局mutations
 * 示例1:
 * this.$store.commit('UPDATE_VERSION',newVersion)
 * 
 * 示例2:
 * 导包
 * import { mapMutations } from 'vuex'
 * methods 方法模块进行注册
 * methods: { 
 *    ...mapMutations(['UPDATE_VERSION']), // 保持原方法名不变,
 *    ...mapMutations({'updateVersion': 'UPDATE_VERSION'})// 在次组件中,新起一个名字
 * }
 * 直接使用
 * this.UPDATE_VERSION('')
 * this.updateVersion('')
 * 
 * 
 * 二、如何使用modules中的mutations( namespaced:true)
 * 示例1:
 * this.$store.commit('settings/UPDATE_VERSION',newVersion)
 * 
 * 示例2:
 * import { mapMutations } from 'vuex'
 * methods 方法模块进行注册
 * methods: { 
 *    ...mapMutations('settings',['UPDATE_VERSION']), // 保持原方法名不变,
 *    ...mapMutations('settings',{'updateVersion': 'UPDATE_VERSION'})// 在次组件中,新起一个名字
 * }
 * 直接使用
 * this.UPDATE_VERSION('')
 * this.updateVersion('')
 * 
 * 
 */
const mutations = {
  UPDATE_VERSION: function (state, newVersion) { 
    state.settingObj.version = newVersion
  },

  UPDATE_TIME: function (state, newTime) { 
    state.settingObj.updateTime = newTime
  },

  UPDATE_SETTING_OBJ: function (state, newSettingObj) { 
    state.settingObj = newSettingObj
  },
}

/**
 * 单一对数据进行加工之后,再进行存储,在此处进行处理之后,然后调用 mutations 内的方法
 * 
 * 一、如何使用全局 actions
 * 示例1:
 * this.$store.dispatch('settings/updateVersion','这是更新之后的版本号:V5.5.5')
 * 
 * 示例2:
 * 先导包
 * import { mapActions } from 'vuex'
 * 然后复制下面代码到 methods 模块进行注册
 * methods: { 
 *    ...mapActions(['updateVersion']), // 保持原方法名不变,
 *    ...mapActions({'newUpdateVersion': 'updateVersion'})// 在次组件中,新起一个名字
 * }
 * 直接使用
 * this.updateVersion('') // 对应保持原名称不变
 * this.newUpdateVersion('') // 对应新名称
 * 
 * 二、如何使用 modules 中的 actions namespaced:true)
 * 
 * 示例1:
 * this.$store.dispatch('settings/UPDATE_VERSION',newVersion)
 * 
 * 示例2:
 * import { mapActions } from 'vuex'
 * methods: { 
 *    ...mapActions('settings',['updateVersion']), // 保持原方法名不变,
 *    ...mapActions('settings',{'newUpdateVersion': 'updateVersion'})// 在次组件中,新起一个名字
 * }
 * 直接使用
 * this.updateVersion('') // 对应保持原名称不变
 * this.newUpdateVersion('') // 对应新名称
 * 
 */
const actions = {

  updateVersion({ commit }, data) { 
    commit('UPDATE_VERSION', data)
  },

  updateSettingObj({ commit }, data) { 
    commit('UPDATE_SETTING_OBJ', data)
  },

  updateTime({ commit }, data) { 
    commit('UPDATE_TIME',data)
  },

}

/**
 * 一、如何使用全局getters
 * 示例1:
 * this.$store.getters.settingObj
 * 
 * 示例2:
 * import { mapGetters } from 'vuex'
 * 在 计算属性 computed 使用
 * computed: { 
 *    ...mapGetters(['updateVersion']), //保持原方法名不变,
 *    ...mapGetters({'newUpdateVersion': 'updateVersion'}) //在次组件中,新起一个名字
 * }
 * 
 * 二、如何使用 modules 中的 getters
 * 示例1:
 * this.$store.getters.settings.settingObj
 * 在 计算属性 computed 使用
 * computed: { 
 *    ...mapGetters('settings',['settingObj']), // 保持原方法名不变,
 *    ...mapGetters('settings',{'newSettingObj': 'settingObj'})// 在次组件中,新起一个名字
 * }
 */
const getters = {
  settingObj: (state) => state.settingObj,
}

export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters,
}

具体的使用方法,请看settings.js文件,注释写的比较清晰一些。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小迪学习笔记(内网安全)(常见概念和信息收集)

小迪学习笔记(内网安全)(一) 内网分布图内网基本概念工作组和域环境的优缺点内网常用命令域的分类单域父域和子域域数和域森林 Linux域渗透问题内网安全流程小迪演示环境信息收集mimikatzLazagne(all)凭据信息政集操作演示探针主机…

书生·浦语大模型开源体系(一)论文精读笔记

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

电脑端手机配置信息检测的实用性与局限性分析

摘要 本文介绍了如何使用克魔助手工具在电脑上检测手机的配置信息。通过该工具,用户可以全面了解手机的硬件和操作系统信息,包括电池、CPU、内存、基带信息和销售信息等。 引言 在日常工作中,了解手机的配置信息对于开发和测试人员非常重要…

聚观早报 | 抖音独立商城App上线;阿里云联发科合作

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 3月29日消息 抖音独立商城App上线 阿里云联发科合作 苹果WWDC24官宣 恒大汽车2023年营收财报 亚马逊投资Anthro…

电商平台api接口:采购比价可用的比价电商商品数据采集API接口推荐

主流电商API数据接口接入方案 目前,许多企业在进行内部采购时都有比价的需求。企业利用比价采购这一方式,能通过对比不同平台上、不同供应商的报价,进而选择最符合其需求和预算的产品或服务。 在比价采购的流程中,最重要的步骤就…

学浪视频如何录屏保存?

学浪软件对录屏进行了防范,不管什么录屏软件只要打开学浪就会黑屏,这里就教大家一个方法,可以使用网页版进行录屏 这里是学浪的网页版地址 https://student-api.iyincaishijiao.com/ep/pc/login 但是你们打开这个地址会直接跳转到这个页面…

03-Linear Regression

什么是回归算法 回归算法是一种有监督算法回归算法是一种比较常用的机器学习算法,用来建立“解释”变量(自变量X)和观测值 (因变量Y)之间的关系; 从机器学习的角度来讲,用于构建一个**算法模型(函数)**来做属性 ( X ) (X) (X) 与标签 ( Y ) (Y) (Y) 之…

LLMs之Mistral:Mistral 7B v0.2的简介、安装和使用方法、案例应用之详细攻略

LLMs之Mistral:Mistral 7B v0.2的简介、安装和使用方法、案例应用之详细攻略 导读:Mistral AI首个7B模型发布于2023年9月,在基准测试中超越Llama 2 13B,一下子声名大振。Mistral 7B v0.2对应的指令调优版本Mistral-7B-Instruct-v0…

UVA1388 - Graveyard (数学)

Graveyard 题面翻译 题目描述 在一个周长为 10000 10000 10000的圆上等距分别着 n n n个雕塑。现在又有 m m m个新雕塑加入(位置可以随意),希望所有 n m nm nm个雕塑在圆周上分布均匀。这就需要移动其中一些原有的雕塑。要求 n n n个雕塑移动的总距离尽量小。 输入格式 输…

mongodb sharding分片模式的集群数据库,日志治理缺失导致写入数据库报错MongoWriteConcernException的问题总结(上)

一、背景 常见的mongodb集群模式有以下三种: 主从复制(Master-Slave)模式副本集(Replica Set)模式分片(Sharding)模式 公司测试环境搭建的集群采用分片模式,有同事反馈说&#xf…

【Vue3源码学习】— CH2.5 reactiveEffect.ts:Vue 3响应式系统的核心

reactiveEffect.ts:Vue 3响应式系统的核心 1. 什么是 reactiveEffect?2. 核心机制2.1 依赖收集(Track)2.2 触发更新(Trigger)2.3 效果范围(effectScope) 3. 源码解析 —— track3.1 …

绿联 部署vocechat,搭建私人聊天服务器,用于小型团队和家庭环境

1、镜像 privoce/vocechat-server:latest 2、安装 2.1、基础设置 重启策略:容器退出时总是重启容器。 2.2、网络 桥接即可。 2.3、存储空间 装载路径:/home/vocechat-server/data不可变更,权限读写。 2.4、端口设置 容器端口3000不可变…

备考ICA----Istio实验14---出向流量管控Egress Gateways实验

备考ICA----Istio实验14—出向流量管控Egress Gateways实验 1. 发布测试用 pod kubectl apply -f istio/samples/sleep/sleep.yaml kubectl get pods -l appsleep2. ServiceEntry 创建一个ServiceEntry允许流量访问edition.cnn.com egressgw/edition-ServiceEntry.yaml api…

基于springboot+vue+Mysql的家政服务管理平台

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

C# 多线程

文章目录 C# 多线程进程与线程无参数的子线程带参数的子线程运行结果 销毁线程 Abort()运行结果 ThreadPool和Task运行结果 C# 多线程 进程与线程 进程:进程就是一个应用程序,对电脑的各种资源的占用 线程:线程是程序执行的最小单位&#…

动力电池产业迎来周期性调整,宁德时代开启新角逐?

大爆发之后,新能源电池行业正在迈入紧张的下半场,一些数据显现出迹象。 根据业绩预告情况,目前57家锂电企业中,有45家企业的净利润负增长。另外,据中国汽车动力电池产业创新联盟数据,2月我国动力电池装车量…

【python plotly库介绍】从视觉到洞见:桑基图在业务分析中的应用【保姆级教程过于详细珍藏版】

👤作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 本文结构:工具介绍python实现库 - 案例 - 分析思路与过程 实战专栏:https://blog.csdn.net/cciehl/category_12615648.html 备注说明: 企业…

Vue实现图片浏览器

结合之前所学到的v-show,v-on,v-bind写一个图片浏览器。 整个图片浏览器有两个按钮,“上一张”按钮会切换到上一张图片,“下一张”按钮会切换到下一张。切在第一张图片时,“上一张”按钮会隐去不见;同理&a…

星闪BLE与蓝牙

蓝牙与低功耗蓝牙 蓝牙工作在2.4GHz的频段,在工作频段2402MHz-2480MHz上分为79个信道,低功耗蓝牙分为40个信道。一组设备通信的时候,短暂占用一个信道发包,由于其跳频技术,每次传输完数据包之后都会切换到另一个信道继…

云渲染实用工具:3ds max怎么改低版本?

3ds Max是建模领域广泛采用的专业软件,它通过定期更新来不断增强功能和提升性能。但这些频繁的更新有时会导致一些插件暂时无法与新版本完全兼容。为了解决这个问题,设计师们可以采用一个简单有效的方法,那就是将较新版本的3ds Max文件进行版…