news 2026/9/8 18:43:22

react-design-patterns详解六:Command命令模式封装Wizard步骤导航,行为内聚的秘诀

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
react-design-patterns详解六:Command命令模式封装Wizard步骤导航,行为内聚的秘诀

react-design-patterns详解六:Command命令模式封装Wizard步骤导航,行为内聚的秘诀

【免费下载链接】react-design-patternsA research project to apply the object-oriented design patterns to React.项目地址: https://gitcode.com/gh_mirrors/re/react-design-patterns

react-design-patterns是一个把经典面向对象设计模式落到 React 上的研究项目,覆盖单例、桥接、备忘录等常见模式;本篇聚焦Command 命令模式,通过一个Wizard步骤导航组件,揭开它"行为内聚"的秘诀。

什么是Command命令模式:把行为封装在一处

命令模式的核心思想一句话就能说清:把"用户发起的某个动作"当成一个独立的行为单元,集中封装起来

最经典的场景是"撤销 / 重做"——每个操作都被记成一个"命令",之后可以随意回放、回退。而在 React 中,这套思想不需要类继承和消息队列,靠组件本身 + 状态就能自然实现,这正是本项目想验证的观点。

React步骤导航怎么写:Wizard组件实战

想象一个注册流程:创建账号 → 验证邮箱 → 完成,共三步。如果直接用路由硬写,通常会遇到两个坑:

  • 逻辑分散:"去哪一步"的判断散落在每个步骤组件和路由配置里;
  • 状态外泄:"当前走到第几步"这个状态,不得不塞进 Redux 这类全局状态容器。

命令模式的回答是:所有导航行为收进一个容器组件 Wizard,步骤组件只管展示自己。示例代码在example/command/CommandExample.js中,用法极其简单,把步骤组件以数组形式传进去即可:

<Wizard steps={[ Step1, Step2, Step3, ]} />

Wizard内部只维护一个状态——当前步骤索引:

const [ idx, setIdx ] = React.useState(0)

它根据索引渲染对应的步骤,并在非最后一步时显示"Go to next step"按钮,点击只做一件事:setIdx(prevIdx => prevIdx + 1)

✨ 至此,索引状态、渲染逻辑、点击响应,全部被"锁"在Wizard内部,步骤组件对导航完全无知。

行为内聚的秘诀:改导航逻辑,不用碰步骤

为什么这种设计值得借鉴?因为行为与内容被彻底分开了

对比项不用命令模式用 Wizard 组件
导航逻辑散布在各步骤 / 路由中集中在 Wizard 一处
当前步骤状态依赖全局状态容器封装在组件自身 state
扩展新导航要改多个组件只改 Wizard

例如要加一个"返回上一步"按钮,或"跳过第二步",只需要修改Wizard的内部逻辑,Step1/Step2/Step3一行代码都不用动。项目README.md中点明了这一点:任何导航逻辑的变更(如增加回退能力),都不会影响具体步骤的实现——这就是"行为内聚"带来的核心收益:行为成为一等的封装单元,可以自由替换与扩展。

三步上手:运行Command模式示例

1️⃣ 克隆项目:

git clone https://gitcode.com/gh_mirrors/re/react-design-patterns

2️⃣ 进入示例目录并安装依赖:

cd react-design-patterns/example npm install

3️⃣ 启动本地服务:

npm start

打开http://localhost:8080,点击顶部的Command按钮,即可亲手体验 Wizard 步骤导航。入口文件example/index.js同时注册了单例、中介者、桥接、备忘录等全部示例模式,可以一键切换着玩。

小结

  • 命令模式的本质:把"用户发起的动作"封装为独立、可复用的行为单元;
  • Wizard组件中,步骤组件只管内容,容器组件负责行为,导航逻辑不再散落;
  • 项目里遇到多步表单、审批流、任务向导时,都可以借鉴这套思路:行为内聚、内容解耦,代码才真正好改。

到这里,react-design-patterns 详解系列的 Command 命令模式篇就讲完了。项目里还有状态模式、策略模式、中介者模式等示例与文档(见doc/目录与example/目录),欢迎按同样的方式继续探索。

【免费下载链接】react-design-patternsA research project to apply the object-oriented design patterns to React.项目地址: https://gitcode.com/gh_mirrors/re/react-design-patterns

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 11:47:21

Scratch编程进阶:从“存钱罐”项目掌握事件驱动与状态管理

1. 项目背景与核心挑战解析 “存钱罐”这个题目&#xff0c;乍一看是蓝桥杯国赛真题&#xff0c;很多家长和老师可能会觉得&#xff0c;这无非又是一个考察Scratch基础操作和逻辑思维的编程题。但如果你真的这么想&#xff0c;那就可能低估了国赛题目的深度。这道题真正的价值&…

作者头像 李华
网站建设 2026/9/2 11:42:20

AI-native公司里,为什么75%工作自动化后仍需要25%的人?

先说结论&#xff1a;AI-native 公司里技术能自动完成很大一部分重复性工作&#xff0c;这个说法本身没有问题&#xff0c;但它经常被过度简化。很多人只盯着“自动化比例”这个数字&#xff0c;却忽略了一个关键事实——剩下的那部分工作&#xff0c;恰恰是决定系统能不能持续…

作者头像 李华
网站建设 2026/9/1 7:42:02

NXP i.MX处理器:边缘计算的异构架构与AI实践指南

做边缘设计&#xff08;Edge Designs&#xff09;这么多年&#xff0c;我越来越觉得&#xff0c;处理器选型这件事真的不是刷参数能解决的。前几年看方案&#xff0c;主频高、核数多基本就赢了&#xff1b;可到了今天&#xff0c;客户开口就是“本地AI、安全启动、实时控制、低…

作者头像 李华
网站建设 2026/8/30 14:34:02

AI怎么记住你的偏好?拆解 Hermes Agent 的持久化记忆

AI怎么记住你的偏好&#xff1f;拆解 Hermes Agent 的持久化记忆 【免费下载链接】hermes-agent The agent that grows with you 项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent 你有没有遇到过这种情况&#xff1a;每次新开一个对话&#xff0c;AI 都…

作者头像 李华