肃宁做网站百度关键词搜索排名代发

张小明 2025/12/31 14:17:13
肃宁做网站,百度关键词搜索排名代发,wordpress openid,国外WordPress小说主题Vue 组件解耦实践#xff1a;用回调函数模式替代枚举类型传递 前言 在 Vue 组件开发中#xff0c;父子组件通信是一个常见场景。当子组件需要触发父组件的某个操作#xff0c;而父组件又需要根据触发来源执行不同逻辑时#xff0c;很容易写出耦合度较高的代码。本文通过一个…Vue 组件解耦实践用回调函数模式替代枚举类型传递前言在 Vue 组件开发中父子组件通信是一个常见场景。当子组件需要触发父组件的某个操作而父组件又需要根据触发来源执行不同逻辑时很容易写出耦合度较高的代码。本文通过一个真实的登录模块重构案例介绍如何使用回调函数模式来解耦组件。问题场景业务背景在登录页面中验证码登录组件有两个操作入口点击获取验证码按钮点击登录按钮两个操作都需要检查用户是否同意服务协议。如果未同意需要弹出协议确认弹窗。用户确认后根据触发来源执行不同的后续操作。原有实现// codeLogin.enum.ts - 子组件定义枚举exportconstCodeLoginEnum{CODE_BTN:code-btn,// 获取验证码按钮LOGIN_BTN:login-btn// 登录按钮}asconst;// codeLogin.vue - 子组件constgetCode(){if(!isAgree.value){emit(changeCodeAgreeDisplayType,CodeLoginEnum.CODE_BTN);// 告诉父组件是哪个按钮emit(toggleAgreeDialog,true);return;}// ...}// login.vue - 父组件consthandleAgreementConfirm(){if(codeAgreeDisplayType.valueCodeLoginEnum.LOGIN_BTN){// 登录按钮触发的需要校验验证码if(!verifyKey.value){ElMessage.warning(请先获取验证码);return;}}codeLoginInstance.value?.doGetCode();}问题分析父组件依赖子组件内部细节父组件需要导入并理解CodeLoginEnum违反开闭原则子组件新增按钮时父组件也需要修改职责不清子组件的业务逻辑分散在父子两个组件中可测试性差父组件的逻辑依赖子组件的枚举定义解决方案回调函数模式核心思想子组件不告诉父组件我是谁而是告诉父组件确认后请通知我将后续要执行的操作封装为回调函数保存在子组件内部。父组件只需要在适当时机通知子组件执行即可。重构后的实现// codeLogin.vue - 子组件typePendingCallback(()void)|null;constpendingCallbackrefPendingCallback(null);constgetCode(){if(!isAgree.value){// 保存回调协议确认后执行获取验证码pendingCallback.value(){executeGetCode();};emit(toggleAgreeDialog,true);return;}executeGetCode();}constcodeLogin(){if(!isAgree.value){// 保存回调协议确认后执行登录pendingCallback.value(){emit(codeLogin,mobileValue.value,areaCodeValue.value,verifyCodeArg.value);};emit(toggleAgreeDialog,true);return;}emit(codeLogin,mobileValue.value,areaCodeValue.value,verifyCodeArg.value);}// 供父组件调用constonAgreementConfirmed(){pendingCallback.value?.();pendingCallback.valuenull;}defineExpose({onAgreementConfirmed});// login.vue - 父组件consthandleAgreementConfirm(){toggleIsAgree(true);toggleAgreeDialog(false);if(isAccount()){doLoginFn(loginTempData);}else{// 简单通知子组件执行回调无需知道具体是什么操作codeLoginInstance.value?.onAgreementConfirmed();}}数据流对比重构前┌─────────┐ 发送按钮类型 ┌─────────┐ 根据类型判断 ┌─────────┐ │ 子组件 │ ─────────────→ │ 父组件 │ ─────────────→ │ 子组件 │ └─────────┘ └─────────┘ └─────────┘重构后┌─────────┐ 保存回调 ┌─────────┐ 通知执行 ┌─────────┐ │ 子组件 │ ─────────────→ │ 父组件 │ ─────────────→ │ 子组件 │ └─────────┘ 请求显示弹窗 └─────────┘ onConfirmed └─────────┘ (不传类型) (不传参数)方案对比维度枚举类型传递回调函数模式耦合度高父组件依赖子组件枚举低父组件只调用方法扩展性差新增类型需改两处好只改子组件职责划分模糊逻辑分散清晰子组件自治代码量需要枚举文件无额外文件可测试性差依赖外部枚举好逻辑内聚适用场景回调函数模式适用于以下场景异步确认流程如本文的协议确认、二次确认弹窗等多入口单出口多个触发点但后续处理由同一个组件负责子组件业务自治子组件的业务逻辑不应该泄露给父组件注意事项回调清理执行完回调后记得置空避免重复执行错误处理回调执行可能失败需要考虑异常情况状态同步确保回调执行时相关状态如isAgree已更新总结组件解耦的核心原则是让每个组件只关心自己的职责。当发现父组件需要了解子组件的内部实现细节时就是重构的信号。回调函数模式是一种简单有效的解耦手段它将做什么的决策权留给子组件父组件只负责何时做的协调。这种控制反转的思想在很多设计模式中都有体现值得在日常开发中灵活运用。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做手机网站要多少钱手机网络不好怎么办

Kotaemon如何实现会话加密?TLS端到端保护 在企业级智能对话系统日益普及的今天,一个看似简单的问题背后可能隐藏着巨大的安全风险:当用户通过网页或App向AI助手提问时,这条消息是否会被截获?如果问题涉及财务数据、客…

张小明 2025/12/26 19:36:58 网站建设

佛山专业的网站建设自己建一个电商网站

Elasticsearch聚合查询性能瓶颈分析与优化:从原理到实战在当今数据驱动的时代,企业对海量日志、用户行为和业务指标的实时分析需求日益增长。Elasticsearch(简称ES)作为主流的分布式搜索与分析引擎,凭借其近实时检索能…

张小明 2025/12/26 19:35:49 网站建设

用html做音乐网站岳阳网站开发公司

Langchain-Chatchat 如何防范恶意爬虫攻击?安全防护建议 在企业纷纷引入大模型构建智能问答系统的今天,Langchain-Chatchat 因其“数据不出内网”的特性,成为许多组织搭建本地知识库的首选方案。它允许用户将 PDF、Word 等私有文档导入系统&a…

张小明 2025/12/26 19:35:12 网站建设

中山市哪家公司做网站wordpress generator

FaceFusion 全平台支持:从桌面到云端的无缝部署实践在数字内容创作爆发式增长的今天,人脸替换技术早已不再是影视特效工作室的专属工具。随着开源项目如 FaceFusion 的不断演进,普通人也能在自己的笔记本上完成高质量的“换脸”操作。然而&am…

张小明 2025/12/26 19:34:31 网站建设

南宁网站建设nnxun网站建网站建设企业电话

Wespeaker终极指南:快速掌握说话人识别的完整方法 【免费下载链接】wespeaker Research and Production Oriented Speaker Verification, Recognition and Diarization Toolkit 项目地址: https://gitcode.com/gh_mirrors/we/wespeaker 在当今语音技术快速发…

张小明 2025/12/26 19:33:55 网站建设

上海市建设工程材料网站黄j网

在 Android 开发中,流畅度是用户体验的核心指标。业界公认的流畅标准是 60fps,这意味着系统必须在 16.6ms 内完成一帧的全部计算与绘制。一旦主线程耗时过长,导致无法在 VSync 信号到来前提交数据,就会发生丢帧(Droppe…

张小明 2025/12/28 10:17:12 网站建设