vuex中actions异步调用以及读取值

项目场景:

提示:这里简述项目相关背景:

将根据segmentId查出来的合同信息托管到vuex中,让每个人都可以获取到合同信息


描述以及问题点

1:调用vuex异步函数的语法是

this.$store.dispatch('actions方法名',值)

2:在computed(计算属性)中使用mapState语法糖

computed: {

    ...mapState({

      contractCode:state => state.contractInfo.contractCode,

    })

  },

3:调用成功后有可能读取不到值

首先我们要明白发送请求属于异步任务中的微任务,所以在你读取的时候,有可能还没有赋值成功,所以,你需要监听这个值,如下:

watch: {

    // 监听

    "contractCode":function(val){

      if(val!=""||val!=null||val!=undefined){

        console.log("vuex异步调用后获取数据=========监听",this.contractCode)

      }

    }

  },

事件循环机制  注:

  • 整体的script(作为第一个宏任务)开始执行的时候,会把所有代码分为两部分:“同步任务”、“异步任务”;
  • 同步任务会直接进入主线程依次执行;
  • 异步任务会再分为宏任务(进入宏任务队列) 和 微任务(进入微任务队列)。
  • 当主线程内的任务执行完毕(主线程为空时),会检查微任务的任务队列,如果有任务,就进入主线程全部执行,如果没有就从宏任务队列读取下一个宏任务执行;
  • 每执行完一个宏任务就清空一次微任务队列,此过程会不断重复,这就是Event Loop;

实例:

提示:这里填写该问题的具体解决方案:

1:在store中新建一个js文件

/**@Author: FangbinGuo*@Date:2023-09-11 10:19:56*@Description:*/
//  合同信息的接口
import {getHTMC,} from "@/api/payment/projectInspect/payoff";const state= {contractCode:"",contractName:"",
}
const mutations= {SET_ContractCode: (state, contractCode) => {state.contractCode = contractCode},SET_ContractName: (state, contractName) => {state.contractName = contractName},
}const actions = {getHTInfo({ commit }, segmentId) {getHTMC({segmentId:segmentId}).then(res=>{// console.log("根据标段id获取合同信息========",res)commit('SET_ContractCode', res.data.contractCode);commit('SET_ContractName', res.data.contractName);}).catch(err=>{console.log(err)})}
}
export default{state,mutations,actions,
}

2:在store的index文件中引入后抛出

import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
import contractInfo from './modules/contractInfo'Vue.use(Vuex)const store = new Vuex.Store({modules: {contractInfo,},getters
})export default store

3:页面dispatch调用

created() {this.$store.dispatch('getHTInfo',this.segmentId);},

4:页面引入mapState语法糖

5:在计算属性中使用mapState语法糖

computed: {...mapState({contractCode:state => state.contractInfo.contractCode,})},

6:监听这个变量

watch: {// 监听"contractCode":function(val){if(val!=""||val!=null||val!=undefined){console.log("vuex异步调用后获取数据=========监听",this.contractCode)}}},

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

typeScript 学习笔记(二)

类接口 TypeScript 入门教程 (xcatliu.com) 十四.类 ① 类 类:定义了一件事物的抽象特点,包含它的属性和方法对象:类的实例,通过new生成面向对象(OOP)的三大特性:封装、继承、多态封装&…

arm栈推导

按照栈生长方向分:可以分为递增栈(向高地址生长);递减栈(向低地址生长) 按照sp执行位置来分:满栈(sp指向栈顶元素的位置);空栈(sp指向即将入栈的…

ChatGPT AIGC总结Excel中Vlookup,lookup,xlookup的区别

在Excel的使用过程中,查找函数是非常重要的,如Vlookup,lookup,Xlookup,index+match等都是使用的最多的函数,我们让ChatGPT,AIGC用思维导图来总结一下,各查找函数的用法与区别。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle…

驱动测试开发

测试驱动开发介绍 测试驱动开发(Test Driven Development,英文缩写TDD)是极限编程的一个重要组成部分它的基本思想就是在开发功能代码之前,先编写测试代码也就是说在明确要开发某个功能后 首先思考如何对这个功能进行测试,并完成…

我们这一代人的机会是什么?

大家好,我是苍何,今天作为专业嘉宾参观了 2023 年中国国际智能产业博览会(智博会),是一场以「智汇八方,博采众长」为主题的汇聚全球智能技术和产业创新的盛会,感触颇深,随着中国商业…

linux入门---用匿名管道实现一个功能

前言 在之前的学习中我们知道通信的概念和匿名管道的使用,那么接下来我们就要用匿名管道来实现一个功能,首先我们有很多的函数需要被执行,然后创建一些子进程通过匿名管道方式给子进程传递一些信息,然后子进程就根据这些信息来确…

Grafana配置邮件告警

1、创建一个监控图 2、grafana邮件配置 vim /etc/grafana/grafana.ini [smtp] enabled true host smtp.163.com:465 user qinziteng05163.com password xxxxx # 授权码 from_address qinziteng05163.com from_name Grafanasystemctl restart grafana-serv…

优化SOCKS5的方法

在今天的互联网世界中,保护个人隐私和提升网络速度至关重要。作为一种常用的代理协议,SOCKS5代理服务器不仅可以保护您的隐私,还可以实现更快速的网络访问。本文将为您介绍一些优化SOCKS5代理服务器的方法,以提高网络速度和安全性…

工作不好找,普通打工人如何破局

大家好,我是苍何,我的一位阿里朋友被裁后,找工作找了一个月都没结果,很多到最后一面被pass了,不由得做一下感慨,即使是大厂背景又如何,面对经济环境和大环境市场,每个人都不容易。 …

【Redis】Redis 的学习教程(九)之 发布 Pub、订阅 Sub

1. Pub/Sub 介绍 Redis 的发布订阅(Pub/Sub)模式是一种消息传递机制,它允许在发送者和接收者之间建立松耦合的通信关系。在这种模式中,发送者(发布者)将消息发布到一个指定的频道或模式,而接收…

数据结构--二叉树-堆(1)

文章目录 树概念相关的基本概念树的表示 二叉树概念特殊二叉树性质 堆二叉树的顺序结构堆的概念 堆的实现初始化数组初始化为堆向上调整向下调整插入删除打印、摧毁、判空、获取堆顶数据验证 堆的应用堆排序TopK问题 树 概念 树是一种常见的非线性的数据结构,&…

Linux 6.6 初步支持AMD 新一代 Zen 5 处理器

AMD 下一代 Zen 5 CPU 现已开始为 Linux 6.6 支持提交相关代码,最新补丁包括提供温度监控和 EDAC 报告等。 最新的 Linux 6.6 代码中已经加入了包括支持硬件监视器温度监控和 EDAC 报告的补丁。此外,新版本还加入了 x86 / misc 补丁,Phoronix…