当前位置: 首页 > news >正文

Vue3组件通讯——自定义事件(子->父)

需求如下:

1.在子组件中,当用户点击提交按钮后,更新数据库

2.数据更新成功后,子组件通知父组件getUserInfo函数,重新获取数据,同步更新

3.子组件等待getUserInfo函数执行完毕后,调用init函数,获取父组件更新后的数据

在子组件中,当用户点击提交按钮后,更新数据库

// 提交表单的方法
async function submit() {// 更新用户配置文件const res = await updateUserProfile(form);if (res.code === 200) {ElMessage.success(res.msg);await emitEventAndUpdate() //调用自定义事件} else {ElMessage.error(res.msg || "更新失败");}
}

2.数据更新成功后,子组件通知父组件getUserInfo函数,重新获取数据,同步更新

   在子组件中定义 自定义事件,父组件中定义该事件需要调用的方法

//在子组件中定义自定义事件
const emit = defineEmits(['updateUserProfile']);
//在父组件中,定义该事件所需要调用的方法
<userInfo @updateUserProfile="getUserInfo"/>

3.子组件等待getUserInfo函数执行完毕后,调用init函数,获取父组件更新后的数据

// 在子组件促发事件,并等待父组件处理完成
async function emitEventAndUpdate() {await new Promise((resolve) => {emit('updateUserProfile',resolve); // 将 resolve 传递给父组件});init(); // 等待事件完成后调用 init()
}//父组件处理完成后,执行resolve()表示处理完成
async function getUserInfo(resolve) {const res = await getUserProfile().then(res => {if(res.code==200){Object.assign(user,res.data)userStore.setUserInfo(toRaw(user))}});resolve(); //调用 resolve 表示事件处理完成
};

http://www.lryc.cn/news/517569.html

相关文章:

  • GLSL 着色器语言
  • 如何创建一个 Vue.js 工程
  • Mysql 性能优化:覆盖索引
  • vulnhub靶场【DC系列】之7
  • iOS - 消息机制
  • Wireshark 学习笔记1
  • Oracle OCP考试常见问题之线上考试流程
  • 微信小程序之历史上的今天
  • 记一次k8s下容器启动失败,容器无日志问题排查
  • 【HarmonyOS】纯血鸿蒙真实项目开发---经验总结贴
  • kettle做增量同步,出现报错:Unrecognized VM option ‘MaxPermSize-256m‘
  • 网络安全、Web安全、渗透测试之笔经面经总结(三)
  • 计算机的错误计算(二百零五)
  • Vue3(一)
  • 【项目】修改远程仓库地址、报错jdk
  • 实训云上搭建集群
  • 豆包ai 生成动态tree 增、删、改以及上移下移 html+jquery
  • 【网络协议】IPv4 地址分配 - 第二部分
  • 攻防世界 bug
  • Flink如何设置合理的并行度
  • 小兔鲜儿:生鲜区域,最新专题
  • TypeScript语言的网络编程
  • 复合机器人助力手机壳cnc加工向自动化升级
  • 在 C# 中显示动画 GIF 并在运行时更改它们
  • 个人博客搭建(二)—Typora+PicGo+OSS
  • Cloudflare IP 优选工具:轻松找到最快的 CDN 节点
  • HTB:Ransom[WriteUP]
  • Eclipse配置Tomcat服务器(最全图文详解)
  • STM32烧写失败之Contents mismatch at: 0800005CH (Flash=FFH Required=29H) !
  • 用户界面的UML建模10