一个设计精良的组件,是构建可维护、可扩展前端应用的基石。它的“好”体现在API设计、可测试性、状态管理等多个维度。其核心是高内聚、低耦合的原则。
API设计
组件的props是其对外的契约,应当明确、简洁且最小化。 使用typescript或propTypes对props进行类型约束是必不可少的。API的命名应遵循直觉和平台规定。对于复杂的内容,优先考虑使用children或者slot进行组合,而不是通过props将大量的配置和DOM结构传递进去,这样做能让组件更灵活。
状态管理
组件应遵循状态最小化 的原则,只管理自身运行所必须的状态。派生状态应通过计算得出,而非冗余存储。
当组件需要在多个组件间共享,应采用状态提升的模式,由共同的父组件管理。同时,要清晰的界定组件是受控(状态由外部props驱动)还是非受控(内部管理状态)的,并提供相应的API。
可测试性
好的组件一定是易于测试的。这要求组件职责单一,一个组件只做一件事。展示型组件应尽可能设计成纯函数,即给定相同的props,总能渲染相同的UI。组件的外部依赖(如API请求)应通过依赖注入的方式传入,方便在测试中进行模拟(mock)。
遵循这些原则设计的组件,不仅易于使用和理解,更能经受住未来需求变更的考验。