2016-12-21 81 views
1

Typechecking guide描述陣營無國籍組分和類型檢查React.PropTypes.element

//甲陣營元件。
optionalElement:React.PropTypes.element,

這不是工作用於檢查無狀態組件(定義爲函數)。

我使用

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

,但實在是太冗長,而這並不只是這是無狀態的組件功能限制輸入。

是否存在另一個PropTypes.<test>以匹配兩種React Component?

+3

* * *當您使用JSX('')或調用'React.createElement'時會得到什麼。看起來你可能會傳遞組件「構造函數」本身,而不是它的元素。你可以請你發佈你的代碼如何設置道具? –

回答

1

無狀態功能組件確實支持相同的類型檢查機制。只需將.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視爲無效輸入?