工程建设信息官方网站沧州关键词排名按天收费

张小明 2025/12/31 18:51:33
工程建设信息官方网站,沧州关键词排名按天收费,油漆涂料网站建设,百度智能建站系统一、背景#xff1a;从“弹框切换”到“弹框流程”在中大型前端项目中#xff0c;弹框往往不再只是简单的显示与隐藏#xff0c;而是承载着创建、编辑、确认等一整套业务流程。如果仍然通过多个 el-dialog 或大量 v-if 来控制#xff0c;很容易出现状态分散、切换逻辑混乱、…一、背景从“弹框切换”到“弹框流程”在中大型前端项目中弹框往往不再只是简单的显示与隐藏而是承载着创建、编辑、确认等一整套业务流程。如果仍然通过多个el-dialog或大量v-if来控制很容易出现状态分散、切换逻辑混乱、扩展成本高等问题。本文基于 Vue3通过动态组件 配置驱动 轻量命令模式的方式实现页面中只存在一个el-dialog弹框内容可自由切换弹框之间具备明确的 next / back 流程关系流程中产生的数据可以稳定地在组件之间传递二、核心设计思路整体拆分为四个角色dialogConfig描述“弹框长什么样”dialogFlow描述“弹框怎么走流程”dialogCommand对外暴露命令open / next / back / closeDialogContainer唯一的el-dialog容器业务层只负责“发出指令”不直接操作弹框状态。三、弹框配置dialogConfigimport StepOne from ./dialogs/StepOne.vue import StepTwo from ./dialogs/StepTwo.vue import ConfirmDialog from ./dialogs/ConfirmDialog.vue export const dialogConfig { stepOne: { component: StepOne, title: 第一步, width: 600px }, stepTwo: { component: StepTwo, title: 第二步, width: 600px }, confirm: { component: ConfirmDialog, title: 确认信息, width: 500px } } as const export type DialogType keyof typeof dialogConfig四、弹框流程配置dialogFlowimport type { DialogType } from ./dialogConfig export const dialogFlow: RecordDialogType, { next?: DialogType; back?: DialogType } { stepOne: { next: stepTwo }, stepTwo: { back: stepOne, next: confirm }, confirm: { back: stepTwo } }流程关系完全由配置决定组件内部不需要知道下一步是谁。五、弹框状态与流程上下文5.1 弹框状态import { ref } from vue import type { DialogType } from ./dialogConfig export const dialogVisible ref(false) export const currentDialog refDialogType | null(null)5.2 流程上下文用于组件之间传递数据import { reactive } from vue export const dialogContext reactiveRecordstring, any({})dialogContext用于存放整个弹框流程中产生的数据它的生命周期与流程一致。六、命令层实现核心6.1 打开弹框export function openDialog(type: DialogType, data: Recordstring, any {}) { currentDialog.value type Object.assign(dialogContext, data) dialogVisible.value true }6.2 下一步携带数据import { dialogFlow } from ./dialogFlow export function nextDialog(payload: Recordstring, any {}) { const current currentDialog.value if (!current) return Object.assign(dialogContext, payload) const next dialogFlow[current]?.next if (next) { openDialog(next, dialogContext) } }6.3 返回上一步export function backDialog() { const current currentDialog.value if (!current) return const back dialogFlow[current]?.back if (back) { openDialog(back, dialogContext) } }6.4 关闭弹框并清理数据export function closeDialog() { dialogVisible.value false currentDialog.value null Object.keys(dialogContext).forEach(key delete dialogContext[key]) }七、统一弹框容器template el-dialog v-modeldialogVisible :titlecurrentConfig?.title :widthcurrentConfig?.width destroy-on-close component :iscurrentConfig?.component v-binddialogContext nextnextDialog backbackDialog closecloseDialog / /el-dialog /template script setup langts import { computed } from vue import { dialogConfig } from ./dialogConfig import { dialogVisible, currentDialog } from ./useDialog import { dialogContext } from ./dialogContext import { nextDialog, backDialog, closeDialog } from ./dialogCommand const currentConfig computed(() { return currentDialog.value ? dialogConfig[currentDialog.value] : null }) /script八、组件如何产生与消费数据8.1 上一步组件提交数据script setup langts const emit defineEmits([next]) const handleNext () { emit(next, { name: Tom, age: 18 }) } /script8.2 下一步组件直接使用数据script setup langts const props defineProps{ name?: string; age?: number }() /script组件不需要知道数据来自哪一步只关心当前要展示什么。九、业务侧如何启动流程import { openDialog } from /dialog/dialogCommand const startFlow () { openDialog(stepOne) }十、组件之间的数据传递方式总结在这套设计中不推荐使用keep-alive来保存上一步组件状态而是采用流程上下文的方式数据不存放在组件内部所有步骤的数据统一进入dialogContext命令层负责数据合并与流转这样做的好处是组件之间完全解耦数据流向清晰、可追踪不受动态组件销毁影响更适合有流程概念的弹框场景结语当弹框开始具备“流程”属性时问题的本质就不再是 UI而是控制权与数据归属。通过动态组件承载 UI通过配置描述流程通过命令驱动行为通过上下文管理数据可以让弹框体系长期保持清晰、稳定、可扩展。这是一种非常贴近真实业务的 Vue3 弹框工程化实践。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

已有网站备案更换idc 多久禹城网页设计

JByteMod-Beta全面解析:从零开始的Java字节码编辑实战指南 【免费下载链接】JByteMod-Beta Java bytecode editor 项目地址: https://gitcode.com/gh_mirrors/jb/JByteMod-Beta 你是否曾经面对复杂的Java字节码感到束手无策?想要深入了解Java程序…

张小明 2025/12/31 12:51:02 网站建设

订房网站开发十大职业资格培训机构

歌声克隆技术深度解析:从声音模仿到艺术再创造的终极指南 【免费下载链接】so-vits-svc-5.0 Core Engine of Singing Voice Conversion & Singing Voice Clone 项目地址: https://gitcode.com/gh_mirrors/so/so-vits-svc-5.0 你是否曾梦想过让偶像歌手为…

张小明 2025/12/31 15:21:11 网站建设

哪公司建设网站网站列表页框架布局原则

TypeScript 循环语句详解 TypeScript 的循环语句语法与 JavaScript 完全相同,包括 for、for...of、for...in、while、do...while,以及数组的高阶方法(如 forEach、map 等)。TypeScript 的优势在于类型推断和类型检查,…

张小明 2025/12/29 4:15:30 网站建设

那个网站可以做雪花特效成都成仁路网站建设

7-Zip:文件压缩管理的终极必备工具 【免费下载链接】7z 7-Zip Official Chinese Simplified Repository (Homepage and 7z Extra package) 项目地址: https://gitcode.com/gh_mirrors/7z1/7z 在日常工作中,你是否经常遇到这样的困扰:重…

张小明 2025/12/31 9:39:27 网站建设

做品牌特价的网站有哪些网站建设模板

Typst字体配置终极解决方案:彻底告别排版异常 【免费下载链接】typst A new markup-based typesetting system that is powerful and easy to learn. 项目地址: https://gitcode.com/GitHub_Trending/ty/typst Typst排版工具在学术写作和技术文档领域日益流行…

张小明 2025/12/31 13:18:34 网站建设

html商城网站模板下载厦门网站设计

第一章:Open-AutoGLM社会效率提升预测Open-AutoGLM 作为新一代开源自动化通用语言模型,正逐步在多个社会关键领域中展现其推动效率变革的潜力。该模型通过自适应任务解析、智能资源调度与跨域知识迁移能力,显著降低人工干预成本,提…

张小明 2025/12/29 4:15:33 网站建设