Vuex :提交action的时候如何设置回调方法

Vuex:不同模板(module)之间分发 action 或提交 mutation Vuex:不同模板(module)之间分发 action 或提交 mutation 场景:卖书的商城,在书籍商品显示详情页的时候需要去获取相关的作者信息,书籍表通过authorId字段关联作者表中的作者。所以考虑方案:在详情页先获取书籍信息,然后通过authorId去查找作者信息。 实现:创建两个状态管理的module:book.js 和 author.js ,然后在详情页:bookDeta... 阅读详情

问题描述: 在action中有 deleteTargetObject( {commit, state } , data) 方法可以执行删除数据操作,需要后台返回删除成功的结果之后再更新数据。

解决办法: 这个时候就需要传递一个回调函数给deleteTargetObject( {commit, state } , data),在接收到后台返回的数据 response 之后,把 response,data 作为参数传递给回调函数,然后执行回调函数。

注意:在vue页面中调用action的deleteTargetObject( {commit, state } , data)的时候,参数只能传递一个(无论加了几个,在update中监听只获取到了第一个参数,所以把回调和需要的参数封装到一个data对象中再传递)。
刚开始不知道,把参数和回调分别作为参数传递给deleteTargetObject(),但是一直没有执行回调函数,试调的时候才发现cb一直是undefined,于是想到把参数和回调函数封装到一个数据对象中传递给deleteTargetObject()

错误做法:

// store
deleteTargetObject({ commit, state }, targetObjectId , cb) {
  deleteTargetObject(targetObjectId).then(response => {
    if (response.status === '200') {
      if (cb !== null) {
        setTimeout(() => cb(response.data), 100)
      }
      // 提交删除
      commit('deleteCurrentTargetObject', targetObjectId)
    }
  })
}
// index.vue
// 删除事件
deleteObject: function() {
   this.deleteTargetObject(this.targetObjectId, result => {
      this.$message({
        type: 'success',
        message: '删除成功!'
      })
    })
}

修改之后:

// store
...
deleteTargetObject({ commit, state }, data) {
  const targetObjectId = data.targetObjectId
  const cb = data.cb
  deleteTargetObject(targetObjectId).then(response => {
    if (response.status === '200') {
      if (cb !== null) {
        setTimeout(() => cb(response.data), 100)
      }
      // 提交删除
      commit('deleteCurrentTargetObject', targetObjectId)
    }
  })
},
// index.vue
// 删除事件
...
deleteObject: function() {
   this.deleteTargetObject({
     targetObjectId: this.targetObjectId,
     cb: result => {
       this.$message({
         type: 'success',
         message: '删除成功!'
       })
     }
   })
}
Vue请求接口失败时如何返回状态 在Vue中,当我们使用axios或其他HTTP库进行接口请求时,有时会遇到请求失败的情况。在这种情况下,我们可以通过返回不同的状态码或错误信息来处理请求失败的情况。通过以上代码,我们可以在Vue中处理接口请求失败的情况并返回相应的状态。当请求失败时,我们将错误信息存储在变量中,并在模板中进行展示,以便用户能够看到相关的错误提示。然后,在Vue组件中,我们可以使用axios库来发送接口请求。如果请求成功,我们将返回的数据存储在。如果请求失败,我们将捕获错误并将错误信息存储在。在上面的模板中,我们使用。 阅读详情

相关推荐

STM32控制舵机SG-5010转动,HAL库

首先设置时钟为72Mhz,预分频系数为72-1,自动重装载计数器的值为5000-1,这样的话就可以得到一个5ms的脉冲宽度,5000的计数值可以让舵机的旋转角度变得更加易控且相对精准,计算旋转角度的时候也可以更加精确。所以我们5ms脉宽,period是5000脉宽-------------角度----------pulse0.5ms-------------0度----------500;1.0ms------------45度---------1000;

qq_73783264的博客 1294

向 Vuex 的 Actions 中的方法添加回调

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。在 Vuex 中,我们会使用 Actions 进行一些异步操作,例如 API 请求。 在许多情况下,我们需要对这样的操作添加回调,在此,我以登录提示为例介绍三种方法: 第一种(不推荐) App.vue methods: { ...mapActions([ 'login' ]), logSuccess(){ cons

张景源的博客 2346

DolphinScheduler+DataX实战:5分钟搞定MySQL到Hive数据同步(附完整JSON配置)

本文详细介绍了如何利用DolphinScheduler与DataX构建企业级数据同步流水线,实现MySQL到Hive的高效数据同步。文章提供了从环境部署、核心组件配置到完整JSON配置的实战指南,并深入探讨了性能调优、增量同步策略以及生产环境下的监控与错误处理,帮助读者快速搭建稳定可靠的数据同步方案。

5b6n7m8的博客 255

vuex中的this.$store.commit和dispatch()使用

在vue的项目里常常会遇到父子组件间需要进行数据传递的情况,我们可以用熟悉的props 或者 $emit 等方式进行父子组件通信,但是,在项目稍微大一点的情况中,面对众多的不相关的平行组件,并且很多数据需要多个组件循环使用,这个时候在这些组件间传递数据,使用上述方法会比较麻烦,项目代码变得冗长,并且不利于组件的复用,提高了耦合度。 为了解决这一问题,我们需要使用Vue 的状态管理工具Vuex

coinisi_li的博客 1万+

嵌入式接口通识知识之PCIe接口

PCIe x1接口是最常见的一种,插槽的长度是最短的,仅有25mm。PCIe x4接口有四个数据通道,提供比x1接口更高的带宽,插槽的长度为39mm,分为前后两组,一组22根针脚用于供电,剩下的42根针脚是数据针脚。插槽全长89mm,有164根针脚,分为前后两组,较短的插槽有22根针脚,主要用于供电,较长的插槽142根,主要用于数据传输,具有16通道所带来的高带宽。PCIe x8接口有八个数据通道,插槽全长56mm,有98跟针脚,分为前后两组,较短的22根针脚用于供电,剩下的76根针脚是数据针脚。

2301_76587520的博客 1306

粒子滤波在基于误差状态量的INS/GNSS组合导航中的使用技巧-On Particle Filter based Error-State INS/GNSS Intergrated Navigation

本文面向以15维惯导(INS)误差为状态量,3维位置误差为量测量的INS/GNSS组合导航系统,​在西工大严恭敏老师的开源工具箱中PF相关库函数基础上实现基于粒子滤波(PF)的惯导误差状态量的递推估计,设计了粒子重置环节并强调了其在本特定场景下的重要性。

I33D33I的博客 1743

关于vuex的mutations和actions理解

前几天在学vuex对mutations和actions进行了比较学习,现在说一下自己对两个的理解: 相同点:mutations和action都是用来改变Vuex store的状态的; 不同点:mutations提供的回调函数是同步的; 而actions提供的方法是异步的,此外,actions的方法最终还是通过调用mutations的方法来实现修改vuex的状态的。 解析:在使用mutations或...

Jay的博客 4313

AD9361 官方例程

文章目录一、官方资料1.1 介绍1.2 下载 和 使用1.3 相关资料二、步骤2.1 在Vivado中构建HDL2.2 在SDK中构建No- OS总结 一、官方资料 1.1 介绍 HDL参考设计介绍:AD9361 HDL Reference Designs 无操作系统介绍:AD9361 No-OS Software 1.2 下载 和 使用 HDL下载:Download HDL 在Vivado中构建HDL:Building HDL No-OS下载:Download No-OS 1.3 相关资料 AD

weixin_44630490的博客 3万+

vue中函数回调传值

在业务开发中,有时候会碰到一种情况:组件内部会触发一些事件用来请求新的数据,数据请求到后将新的数据继续在组件内进行处理。这个场景我们有三种方式可以实现它: 将数据请求写在组件内部,缺点不好维护,违反了单项数据流的原则。 通常我们可以通过this.$emit() 将事件传递到父组件中,让父组件请求数据,然后再传值给子组件,子组件拿到数据后进行下一步处理。适用大部分场景。 在父组件中写一个数据请...

阿嚏乱码的地方 3939

STM32F103C8T6 + GY-906红外测温:手把手教你用CubeMX和HAL库搞定IIC驱动(附完整工程)

本文详细介绍了如何使用STM32F103C8T6和GY-906红外测温传感器(基于MLX90614芯片)实现非接触式温度测量。从STM32CubeMX工程创建、HAL库驱动适配到温度数据采集与处理,提供完整的开发流程和常见问题解决方案,帮助开发者快速掌握红外测温技术。

weixin_29188043的博客 255

【23】OpenCV C++实战篇——张正友相机标定【相机标定原理、相机标定流程、标定结果评价、图像畸变矫正】

R是3×3的正交单位矩阵(即旋转矩阵),t为平移向量,R、t与摄像机无关,所以称这两个参数为摄像机的外参数(extrinsicparameter),可以理解为两个坐标原点之间的距离,因其受x,y,z三个方向上的分量共同控制,所以其具有三个自由度。R是3×3的正交单位矩阵(即旋转矩阵),t为平移向量,R、t与摄像机无关,所以称这两个参数为摄像机的外参数(extrinsicparameter),可以理解为两个坐标原点之间的距离,因其受x,y,z三个方向上的分量共同控制,所以其具有三个自由度。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 4479

前端Vue篇之Vuex中action和mutation的区别、Vuex 和 localStorage 的区别

在Vuex中,Action和Mutation都是用来改变状态的。它们的主要区别在于:Mutation是同步的,而Action是异步的。Mutation是用来改变状态的,而Action是用来处理异步操作的,例如网络请求。

星辰迷上大海的博客 3949

【CANoe】CANoe的 I/O功能-以VN1640A为例

Canoe的 I/O功能-以VN1640A为例

星Yeah 的博客 7883

Vuex核心思想之Mutation、action

Mutation——更改store的状态的唯一方法 更改Vuex的store中的状态的唯一方式是提交mutation。Vuex中的mutation类似于事件 每个mutation都有一个字符串的事件类型(type)和一个回调函数(handler)。 回调函数就是我们对状态进行操作的地方,并且他接收state作为第一个参数。 const store = new Vuex.store({ state...

余光的博客 2277

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

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

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Vuex里面异步提交actions

Vuex里面异步提交actions

huanhuan03的博客 1609

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

vue vuex Action使用

Action action和mutation基本类似: action提交的是mutation,不是直接更改state的状态,而mutation是直接修改state状态 action可以包含任意的异步操作,比如ajax请求 简单注册一个action import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { num: 0,

Liux- 的博客 1358

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[vuex] unknown action type:***

vuex 分模块后使用mapActions调用action老是提示 [vuex] unknown action type:*** 异常 目录 index.js是这样的 import Vue from 'vue' import Vuex from 'vuex' import getters from './getters' Vue.use(Vuex) const modulesFiles = require.context('./modules', true, /\.js$/) .

奔跑的痕迹的博客 7390

前端技术之:如何在vuex状态管理action异步调用结束后执行UI中的方法

一、问题的起源 最近在做vue.js项目时,遇到了vuex状态管理action与vue.js方法互相通信、互操作的问题。场景如下图所示: 二、第一种解决方法 例如,我们在页面初始化的时候,需要从服务端通过API接口获取数据,数据获取成功前需要显示Loading状态框,数据获取完成后,需要将Loading状态框隐藏。 这是一种相对比较简单的应用场景,解决起来当然也比较简单。 我们可以通过s...

popgis的专栏 2146

vuex中mutation和action的详细区别

被问到,死惨了,总结下 一、vuex中mutation和action的详细区别 const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment (state) { state.count++ } }, actions: { increment...

五颜六色的白 3万+

Vuex白话教程第四讲:Vuex旗下的Action

写在前面 通过上一讲「Vuex 旗下的 Mutation」,我们知道了如何去修改 State 的数据,而且只能通过 Mutation 去提交修改,另外还了解到了 Mutation 必须是同步函数,那么如果需求当中必须要用到异步函数怎么办? 好办,那就轮到 Action 上场了。 简单介绍 Action 类似于 mutation,不同在于: 1、Action 提交的是 mutation,而不是直接变更状态。 2、Action 可以包含任意异步操作。 看一个简单的 action 示例: const store

lichanzhaifeng的博客 215

vuex Action

Action 类似于 mutation,不同在于:           注意:Action:可以异步,但不能直接操作State。操作state的方法全部依靠commit mutation完成           Action 提交的是 mutation,而不是直接变更状态。           Action 可以包含任意异步操作。 简单的 action: const store = new ...

kangkang_style的博客 287

VUE——VUEX【action】

/ src/main.js 中的 Vuex Store 配置actions: {// 提交名为 INC 的 mutationasyncInc :自定义的 action 名称1. commit:提交 mutation2. dispatch:触发其他 action3. state:访问当前 state4. getters:访问 getters5. payload :调用 action 时传递的参数(如 {amount: 10})

weixin_63215361的博客 748

Vuex的Action学习

Vuex 的 Action学习   Action 类似于 mutation,不同在于: Action 提交的是 mutation,而不是直接变更状态。 Action 可以包含任意异步操作。 目录: Vuex 的 Action学习 例子 将 store 注入到每个子组件 提交载荷(Payload) 对象风格的提交方式 结合 promise 例子   Actio...

kaelyn_X的博客 876

vuex在action中提交commit异步事件问题

在开发过程中遇到一个问题,就是在action中提交的commit执行是异步事件。 先看代码: // action.js sign_in({ commit }, user) { // 触发登录状态 commit({ type: 'sigin_in', payload : { user } }); console.log("++++++"); }, // mutations.js async sigin_in

qq_41756580的博客 4021

vuex action 与mutations 的区别

vuex action 与mutations 的区别 面试没说清楚。这个太丢人回来整理下: 事实上在 vuex 里面actions 只是一个架构性的概念,并不是必须的,说到底只是一个函数,你在里面想干嘛都可以,只要最后触发 mutation就行。异步竞态怎么处理那是用户自己的事情。 Vuex.Store({ state, actions, mutation }); vue...

hyl999的专栏 1927
上一篇: Vuex:不同模板(module)之间分发 action 或提交 mutation
下一篇: vue+element下拉树型控件
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值