组件化的缺点
我不得不说,到目前为止,我在写基于React的项目时感受最痛苦的事情是组件状态过多。
状态使组件难以测试
在测试有状态组件时,我们需要使组件进入“正确的状态”,以测试其行为。我们还需要处理状态的各种组合(组件可以随时更改)和交互(组件无法控制),并确定要测试的项以及如何进行测试。
状态使组件难以推理
在组件状态非常多的时候,你看代码的时候必须在精神上加倍努力,用来跟踪发生的一切问题。比如“是否已初始化该状态?”,“如果在此更改此状态会发生什么?”,“还有多少其他地方更改此状态”,“此状态是否存在关联条件?”之类的问题。都是常见的问题。跟踪有状态的组件来弄清楚它们的行为变得非常痛苦。
将业务逻辑状态放在组件中非常普遍。当您的项目大部分状态都位于组件中时,即可轻松访问 this.state,开始将比如计算或验证之类的内容也写到组件里面,放入不属于该组件的内容中变得很常见。
当一个组件拥有一个状态时,很容易将其进一步传递给组件内部其他组件,这里的耦合关系,使项目变得更加难以维护。
当然,有时特定组件完全拥有特定状态是有意义的。在这种情况下,可以继续使用this.setState。这是React组件API合理的部分,我不想给人以为它应该是在项目中禁止使用。
每次将状态添加到组件时,请务必意识到。一旦开始把状态写到组件里面,之后是否会导致状态在项目中难以维护。
评论