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

这篇具有很好参考价值的文章主要介绍了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文件

vue异步获取数据,android,html5,前端,javascript,vue.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文件中引入后抛出

vue异步获取数据,android,html5,前端,javascript,vue.js

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调用

vue异步获取数据,android,html5,前端,javascript,vue.js

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

4:页面引入mapState语法糖

vue异步获取数据,android,html5,前端,javascript,vue.js文章来源地址https://www.toymoban.com/news/detail-712673.html

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)
      }
    }
  },

到了这里,关于vuex中actions异步调用以及读取值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【并发编程】线程池多线程异步去分页调用其他服务接口获取海量数据

    前段时间在做一个数据同步工具,其中一个服务的任务是调用A服务的接口,将数据库中指定数据请求过来,交给kafka去判断哪些数据是需要新增,哪些数据是需要修改的。 刚开始的设计思路是,,我创建多个服务同时去请求A服务的接口,每个服务都请求到全量数据,由于这些

    2024年02月13日
    浏览(36)
  • 【并发编程】自研数据同步工具的优化:创建线程池多线程异步去分页调用其他服务接口获取海量数据

    前段时间在做一个数据同步工具,其中一个服务的任务是调用A服务的接口,将数据库中指定数据请求过来,交给kafka去判断哪些数据是需要新增,哪些数据是需要修改的。 刚开始的设计思路是,,我创建多个服务同时去请求A服务的接口,每个服务都请求到全量数据,由于这些

    2024年02月12日
    浏览(38)
  • .net core Api获取所有Action以及注释内容

    有个项目需要获取项目内所有Action,并在凌晨定时任务跑完所有接口检查是否有接口报错,写了如下方法: 实体类: 使用:  

    2024年02月11日
    浏览(41)
  • vue3基于组合式API使异步获取的数据对象具有响应性

    在 Vue 3 中,可以使用组合式 API 中的 ref 和 reactive 函数来使异步获取的数据具有响应性。 首先,使用 ref 函数创建一个响应式的基本数据类型,例如字符串、数字或布尔值。然后,在异步获取数据的回调函数中,更新该 ref 对象的值。由于 ref 对象是响应式的,因此当数据发生

    2024年02月03日
    浏览(52)
  • vue获取本地时间和服务器时间(顺便复习vuex的内容)

    1. vue 实时获取时间 2. 获取服务器的时间,防止本机时间获取错误 场景: 本机经常关机,时间获取不同步,但是服务器时间是同步的,需要获取服务器的时间显示 解决办法: - 1. 在后端服务器的响应头部可以获取date, - 2. 使用简单状态管理store来获取本地时间与服务器的时

    2024年02月09日
    浏览(47)
  • 【Vuex状态管理】Vuex的基本使用;核心概念State、Getters、Mutations、Actions、Modules的基本使用

    在开发中,应用程序需要处理各种各样的数据,这些数据需要保存在应用程序中的某一个位置,对于这些数据的管理就称之为是 状态管理。 在前面是如何管理自己的状态呢? 在Vue开发中,使用组件化的开发方式; 而在组件中定义data或者在setup中返回使用的数据,这些数据称

    2024年02月07日
    浏览(45)
  • 从Vuex中获取数据,数据不更新

    问题: Vuex中的数据修改之后,子组件的数据不会实时更新,需要切换到其他页面,在切换回来数据才会更新,渲染页面 子组件代码: 为什么会出现这种情况呢? 原因是因为在在获取Vuex数据时,是在页面加载前进行获取,在加载完毕之后,Vuex的数据修改后,你子组件的页面

    2024年02月13日
    浏览(40)
  • Vue axios调用springboot接口获取数据库数据并显示到网页

    可以查看简述化的此文 点击 此文简述化文章 PS **由于我自己的本次springboot项目内容很多,所以只是截取了其中关于axios调用接口获取数据的内容,还请大家了解工作原理即可** 添加axios和vue2链接 div div中使用vue语法v-for来循环列表数据item in list 当然关于数据有很多种类嘛,如

    2024年02月07日
    浏览(47)
  • vuex缓存接口返回的数据,只在首次使用调用接口,之后使用vuex中的缓存值

    场景:同一个接口在多个页面调用 问题:重复访问,导致对服务器的重复请求,降低用户体验。 解决:使用vuex的异步处理,第一次访问时将数据缓存,下次访问直接从缓冲中获取,提高访问速度 注意:刷新页面时,会把当前页面占用的缓存释放掉,再重新加载新的缓存,如

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包