PropTypes在React中的重要性是什么?

时间:2016-09-24 14:38:21

标签: javascript reactjs ecmascript-6

我还在学习React并且无法理解PropTypes的重要性。任何人都可以认为定义PropTypes有什么好处?我已经在React文档中阅读了有关此内容的讨论,但我无法理解保持PropTypes除了在类型不匹配时看到控制台错误/警告的优点。它在documentation

上说
  

设计界面时,要分解常见的设计元素   (按钮,表单域,布局组件等)可重用   具有明确定义的接口的组件。 这样,下次你   需要构建一些UI,你可以编写更少的代码。这意味着更快   开发时间,更少的错误和更少的字节数。

除了好处之外,我还有其他一些问题:

  1. 在定义PropTypes时,您肯定会编写更多与粗体语句相矛盾的代码。
  2. 另一个问题是,PropTypes仅适用于子组件,因为父组件通常没有道具吗?
  3. 如果是这样,我们如何检查父组件的状态类型,是否可以StateTypes

2 个答案:

答案 0 :(得分:15)

React围绕组件的概念。整个网页应该分解为组件,每个组件将通过props相互交互。

因此,这些都是使用PropTypes

的所有优点
  • 验证传递给孩子的道具并在传递错误的道具时警告开发者,这可能会破坏您的应用。
  • 作为一个团队,当团队成员创建一个组件时,除非您看到PropTypes
  • ,否则您将无法知道如何处理该组件

PropTypes不是强制性的。

[编辑]按顺序回答问题

  1. 是的,您将编写额外的代码。但是,如果您需要验证props,这是额外的代码,您不需要自己完成。验证将由React本身处理。
  2. 并非完全正确,ParentRoot组件之间存在差异。 Parent组件可以是另一个Parent的子组件,可以是另一个组件的子组件。因此,将其称为Root组件,它将位于UI树的顶部。根据此定义,您可以说PropType仅适用于ParentChild,而不适用于Root组件。
  3. 您无需检查stateType,因为state在组件的范围内。但是,props从一个组件传递到另一个组件。因此,验证组件的state是没有意义的,因为它不是跨组件共享的。即使它是共享的,也只能通过props完成。
  4. 希望它有所帮助...

答案 1 :(得分:0)

  1. PropTypes允许您验证您的道具,否则这是不可能的,因为JavaScript是松散类型的语言。

  2. 您可以在任何需要的地方props,包括父母。或者根本没有它们。通常props是将一些值或回调从父母传递给子孙的唯一方法(实际上是建议的方式)。

  3. 没有StateTypes。