Vue中$emit调用父组件异步方法模拟.then实现方式

 更新时间:2024年09月03日 08:44:22   作者:果粒橙er  
这篇文章主要介绍了Vue中$emit调用父组件异步方法模拟.then实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

$emit调用父组件异步方法模拟.then实现

需求

有一个封装好的弹窗子组件,点确认时$emit父组件删除方法,父组件删除接口调用成功后需要调用子组件close()方法。

  • 方法:1可以直接$refs.dialog.close()关闭弹窗
  • 方法2:可以模拟.then在子组件实现这一逻辑

父组件事件:

    delConfirm(params, callback) {
   	  // reqName是请求名
      reqName(params).then(res => {
        if (res.success) {
          this.$message.success('删除成功!')
          callback() // 回调子组件关闭弹窗
          this.getList() // 删除一条后刷新列表
        }
      })
    },

子组件确认按钮事件:

    confirm() {
      // params是携带的参数 传给父组件 callback后回调的内容是close()方法
      this.$emit('delConfirm', this.params, () => {
        this.close()
      })
    }

$emit调用父组件异步方法,返回结果后再执行子组件的方法

现象

子组件请求父组件的方法,触发数据更新,待数据返回后,才能进行后续的操作

解决

使用回调函数的方式

父组件:

 async getTaskListDetails(callback = () => {}) {
      const { pageSize, currentPage } = this.pagination
      const [res, err] = await taskListDetails({
        limit: pageSize,
        start: pageSize * (currentPage - 1)
      })
      if (err) return this.$message.error(err?.msg || '请求失败')
      if (res.code !== 200) return this.$message.error(res?.msg || '请求失败')
      this.dataList = res?.data?.list || []
      this.mainTask = res.data.main_task
      this.pagination.total = res.data.count
      callback(this.dataList)
 }

子组件:

  this.$emit('updateList', (res) => {
        this.checkTaskProgress(res)
  })

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue实现选中效果

    vue实现选中效果

    本文给大家分享的是如何使用vue实现鼠标点击选中的效果,附上了实例代码,有需要的小伙伴可以参考下
    2020-10-10
  • vue中的keep-alive详解与应用场景

    vue中的keep-alive详解与应用场景

    keep-alive是vue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM,本文给大家介绍vue中的keep-alive详解与应用场景,感兴趣的朋友一起看看吧
    2023-11-11
  • 使用vue进行Lodop打印的一些常用方法小结

    使用vue进行Lodop打印的一些常用方法小结

    这篇文章主要给大家介绍了关于使用vue进行Lodop打印的一些常用方法,需要进行打印功能,Lodop就是实现需求的插件,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • element中drawer模板的实现

    element中drawer模板的实现

    本文主要介绍了element中drawer模板的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Vue 3.0 v-for中的Ref数组用法小结

    Vue 3.0 v-for中的Ref数组用法小结

    在 Vue 2 中,在 v-for 里使用的 ref attribute会用ref 数组填充相应的 $refs property,本文给大家介绍Vue 3.0 v-for中的Ref数组的相关知识,感兴趣的朋友一起看看吧
    2023-12-12
  • Vue使用echarts可视化组件的方法

    Vue使用echarts可视化组件的方法

    这篇文章主要介绍了Vue使用echarts可视化组件的方法,本文通过实例代码案例给大家详细介绍,需要的朋友可以参考下
    2021-07-07
  • Vue实现让页面加载时请求后台接口数据

    Vue实现让页面加载时请求后台接口数据

    这篇文章主要介绍了Vue实现让页面加载时请求后台接口数据
    2022-08-08
  • vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例

    vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例

    今天小编就为大家分享一篇vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue使用自定义指令实现一键复制功能

    vue使用自定义指令实现一键复制功能

    在Vue中,通过自定义指令v-copy和document.execCommand方法,可以实现点击按钮复制内容到剪贴板的功能,适用于处理长文本或多行文本的复制需求,而readonly属性可避免内容被修改和移动设备上的虚拟键盘干扰,感兴趣的朋友一起看看吧
    2024-09-09
  • 网站国际化多语言处理工具i18n安装使用方法图文详解

    网站国际化多语言处理工具i18n安装使用方法图文详解

    国际化是设计软件应用的过程中应用被使用与不同语言和地区,下面这篇文章主要给大家介绍了关于网站国际化多语言处理工具i18n安装使用方法的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-09-09

最新评论