首页 > 其他分享 >vue---操作状态

vue---操作状态

时间:2023-12-15 14:56:54浏览次数:21  
标签:状态 vue mutations dispatch --- 调用 actions commit store

VUE更改VUEX状态:简单示例代码:

import Vue from 'vue';  
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({  
  state: {  
    count: 0  
  },  
  mutations: {  
    increment (state) {  
      state.count++;  
    },  
    decrement (state) {  
      state.count--;  
    }  
  },  
  actions: {  
    increment ({ commit }) {  
      commit('increment');  
    },  
    decrement ({ commit }) {  
      commit('decrement');  
    }  
  }  
});

在该状态管理中,如果直接想要操作改变状态,可以使用 this.$store.commit 来调用 mutations,例如:

this.$store.commit('increment'); 
this.$store.commit('decrement');

此外也可以使用 this.$store.dispatch 来调用 actions 来 操作 mutations 改变状态,例如:

this.$store.dispatch('increment');
this.$store.dispatch('decrement');

那么 this.$store.commit 和 this.$store.dispatch 有什么区别:

commit方法:用于调用 Vuex store 中的 mutations。mutations 是同步事务,用于直接更改状态。当你在组件中需要直接更改状态时,可以使用 commit 方法来调用相应的 mutation。

dispatch 方法用于调用 Vuex store 中的 actions。actions 是用于处理异步操作或执行多个 mutations 的函数。与 mutations 不同,actions 不直接改变状态,而是通过调用 mutations 来改变状态。当你在组件中需要执行异步操作或需要执行多个 mutations 时,可以使用 dispatch 方法来调用相应的 action。

例如:通常会在 actions 里面进行异步操作后改变状态,此时就需要使用 dispatch 来驱动:

区别:

this.$store.commit 直接调用 mutations 来同步地改变状态。

this.$store.dispatch 调用 actions 来处理异步操作或执行多个 mutations。actions 最终还是会通过调用 mutations 来改变状态。

如果你需要执行的操作是同步的并且只需要改变状态,那么使用 commit。如果你需要执行异步操作或需要执行一系列操作,那么使用 dispatch。

打完收工!

标签:状态,vue,mutations,dispatch,---,调用,actions,commit,store
From: https://www.cnblogs.com/e0yu/p/17903384.html

相关文章

  • C++基础 -7- 引用
    ———————引用———————引用就是数据本身不占用空间 ......
  • C-Kermit 连接 Microchip WBZ451 Curiosity Board实例
    TheKermitProject|NowhostedbyPanix.comNewYorkCityUSA•[email protected]…since1981~/.kermrc文件:;ConnecttoWBZ451USB-USARTVirtualCOMdefconnWBZ451{SETPORT\%1;SpecifydevicenameSE......
  • RWP性能之旅-AWR实例分析
    诊断工具汇总系统级别:-TopActivity-AWRReport-ASH-ADDM-EM-ExaWatcher-OSTools-HangAnalyze-TraceEvents-SystemStateDumpSQL级别:-SQLMonitorReport-ASH-DBMS_XPLAN-EM-EXPLAINPLAN-SQLT-10053Trace-TraceEvents-SQLHealth......
  • docker -部署项目-后端
    3.1.部署Java项目hmall项目是一个maven聚合项目,使用IDEA打开hmall项目,查看项目结构如图:我们要部署的就是其中的hm-service,其中的配置文件采用了多环境的方式:其中的application-dev.yaml是部署到开发环境的配置,application-local.yaml是本地运行时的配置。 查看applicatio......
  • vue3Cron表达式组件
    npm安装no-vue3-cron引入报错,就直接把代码拿来自己改了no-vue3-cron仓库地址:https://github.com/wuchuanpeng/no-vue3-cronvue-cron.vue<stylelang="scss">.no-vue3-cron-div{.language{position:absolute;right:25px;z-index:1;}.el-tabs{......
  • device descriptor read/64, error -11
    硬件平台:CM48GRAM核心板Hardware:BCM2711Revision:d03141Serial:100000002297c853Model:RaspberryPiComputeModule4Rev1.1系统:树莓派32位OS问题背景:核心板是8GRAM,由于默认的PAGE_OFFSET是3G,所以内核分配的内存+DMA总大......
  • Airtest-Selenium实操小课①:爬取新榜数据
    此文章来源于项目官方公众号:“AirtestProject”版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途1.前言最近看到群里很多小伙伴都在用Airtest-Selenium做一些web自动化的尝试,正好趁此机会,我们也出几个关于web自动化的实操小课,仅供大家参考~今天跟大家分享的......
  • 无涯教程-Java - isWhitespace()函数
    该方法确定指定的char值是否为空格,包括空格,制表符或换行符。isWhitespace()-语法booleanisWhitespace(charch)这是参数的详细信息-ch  - 原始字符类型。isWhitespace()-返回值如果传递的字符确实是空格,则此方法返回true。isWhitespace()- 示例publiccla......
  • 05-模块和包的概念
    模块和包模块是python的源文件,即.py文件。模块支持导入,一个模块可以导入其他系统提供或第三方模块,可以使用其中提供好的全局变量、函数等。若导入的模块名字过长,也可以使用as使用别名。import会导入一个模块中所有内容,如果只想使用部分内容,可使用from模块import部分这......
  • docker-项目部署-前端
    3.2.部署前端hmall-portal和hmall-admin是前端代码,需要基于nginx部署。在课前资料中已经给大家提供了nginx的部署目录:其中:html是静态资源目录,我们需要把hmall-portal以及hmall-admin都复制进去nginx.conf是nginx的配置文件,主要是完成对html下的两个静态资源目录做代理......