示例提示词
这个 Card 组件已经挂了 11 个布尔开关:按「内容插槽 + 显式变体」的思路给重构方案,列出会被消灭的无效组合。
预期产物
重构蓝图:新接口形状、迁移映射,和一份「从此写不出」的无效状态清单。
把复杂界面拆成易组合、易维护的 React 组件。

写给 React 开发者的组件构成指南,主题只有一个:怎么设计组件的边界,让它长大时不 fork。十条模式各说清解决的问题和接受的代价:children 当内容插槽、props 当开关,一个挂六个布尔开关的组件其实是三个组件;成组组件共享一条只负责结构接线的内部契约,不夹带业务数据;用显式变体取代布尔参数汤,让不可能的组合根本写不出来;两个兄弟要商量的状态放到共同父节点;空槽位、加载中、空列表都要有自己的形状;逃生舱最后才用并且要有名字;布局只管几何、内容只管含义;测试贴着公开接口和用户可见行为走。
配套的模式卡把每条展开成可套用的写法,适合评审组件 API、拆解布尔参数膨胀、给团队一套共同的说法。
示例用于说明请求与期望产物形态,不代表已完成的运行结果。
这个 Card 组件已经挂了 11 个布尔开关:按「内容插槽 + 显式变体」的思路给重构方案,列出会被消灭的无效组合。
重构蓝图:新接口形状、迁移映射,和一份「从此写不出」的无效状态清单。
我们的对话框 context 里夹带了业务数据,一半消费者直接读它:按「接口与实现对偶分离」重画分界线。
稳定的 useDialog 接口提案与迁移步骤,消费者改写点逐一列出。
iOS · Android
iOS
Android
MPL-2.0
Floe 原创指南,以独立编写的内容替代原候选,不分发其上游文本。包内保留候选来源与处理记录。
Floe 自有
发布提交 25e07dbeeb,审计来源 84c524b6fb;目录摘要 iOS 46196ba57ed7… · Android 16de89d019e2…。
版本记录随签名目录发布;以下为目标与已发布版本。