React无状态组件和类型检查React.PropTypes.element

时间:2016-12-21 20:12:35

标签: javascript reactjs

Typechecking guide描述

  

// React元素。
   optionalElement:React.PropTypes.element,

这不适用于检查无状态组件(定义为函数)。

我正在使用

PropTypes.oneOfType([PropTypes.element, PropTypes.func])

但它太冗长了,并且这并不仅限于无状态组件的输入。

是否存在另一个PropTypes.<test>来匹配这两种React组件?

1 个答案:

答案 0 :(得分:2)

无状态功能组件确实支持相同的类型检查机制。只需将.propTypes.defaultProps设置为该函数的属性即可。以下是official guideline,您也可以查看somewhere like here的使用情况。

对于更高级的匹配,PropTypes.oneOfType()应该足够了,您还可以提供“自定义验证器”。这两个选项现在都列在同一个official typechecking guide上。

如果您认为语法冗长,使用import {PropTypes as typeOf } from 'react'别名可能会有所帮助。但是由于以下原因,任何进一步的抽象/别名都不符合React的能力:

  1. React.PropTypes.element是特定于React的受支持的类型检查之一。
  2. 缺少处理边缘案件的标准方法。例如:我应该同意JS typeof NaN === 'number'还是将NaN视为无效输入?