避免组件直接访问应用上下文!
React 组件的设计理念是:创建可重用的UI单元,即使在不同的应用环境中也能保持功能一致。组件库正是这一理念的最佳体现,组件通常可以高度定制。
然而,即使达不到组件库的程度,我们也可以创建可重用的组件,方便在不同应用间迁移,而无需大幅修改。关键在于采用一种设计策略,隔离组件与应用上下文和业务规则。
这就是上下文包装器 (Context Wrapper) 的作用。它在实际需要上下文数据的组件之上添加一层封装,通过 props 提供来自上层的数据。
这意味着,我们可以直接避免组件迁移中的常见问题,例如被迫修改组件或引入应用上下文。采用这种设计模式,我们只需复制组件,并提供必要的 props 即可立即使用。
当然,上下文包装器并非完美无缺,它可能会导致组件的子类化,如果处理不当,会增加复杂性。但这属于更深入的讨论范畴。