该文章翻译自官网 https://reactjs.org/docs/design-principles.html
我们写下这个文档的目的是让你有一个清晰的思路理解我们为什么决定React要这样做,以及为什么不这样做,还有我们的发展理念是什么。当我们兴奋的看到社区贡献,我们并不太愿意选择那些违反了这些理念的贡献。
注意:这个文档适合于那些已经对React有初步理解的人,它描述的是设计理念而不是React它本身(包括React组件和程序)。
构成
React的其中一个关键特征是通过组件构成。不同人写的组件必须要能组合在一起顺利工作。对于我们重要的是你可以添加一个组件功能而不会引起代码的一系列变化。
比如,它必须在不改变其他使用它的组件的同时可以传递一些内部的state到组件里面,同样的,在必要时必须可以向一些组件添加初始化或拆卸代码。
在组件中使用state和lifecycle拦截并没有什么不好的。如同任何强大的特征,他们必须被有节制的使用,但是我们并没有移除它的意图,相反,我们认为他们是让React变得有用的完整部分之一。我们会确保在未来启用更多的功能模式,但是state和lifecycle拦截会和这个模式融为一体而不是被抛弃。
components 经常被描述为 “just functions”,但是在我们的眼里他们需要更好,在React里,components 被描述任何组成的行为,包括rendering,lifecycle和state,一些外部的库比如Relay增加了components的职责,比如描述数据依赖关系,这些想法有可能以某种形式也在React中出现。
通用抽象
通常我们拒绝添加可以在用户空间内实现的特性,我们不想因为没用的库代码让你的程序变得臃肿,然而,这里也有一些例外。
比如,如果React不提供内部state或者lifecycle拦截,用户可能为他们增加自定义的抽象。当有多个相互抵触的抽象的时候,React不能实施或者利用当中的每一个内容,它必须与最低的标准共同工作。