react的傳值類型PropTypes簡單說明

一、首先能夠有那麼多種類型javascript

propTypes: {
    // 能夠聲明 prop 爲指定的 JS 基本類型。默認
    // 狀況下,這些 prop 都是可傳可不傳的。
    optionalArray: React.PropTypes.array,
    optionalBool: React.PropTypes.bool,
    optionalFunc: React.PropTypes.func,
    optionalNumber: React.PropTypes.number,
    optionalObject: React.PropTypes.object,
    optionalString: React.PropTypes.string,
}

二、有部分特殊的類型java

propTypes:{
    // 字符串,DOM 元素或包含這些類型的數組。
    optionalNode: React.PropTypes.node,
    // React 元素
    optionalElement: React.PropTypes.element,
    // 用 JS 的 instanceof 操做符聲明 prop 爲類的實例。
    optionalMessage: React.PropTypes.instanceOf(Message)
}

三、只接受特定的值node

propTypes:{
     // 用 enum 來限制 prop 只接受指定的值。
    optionalEnum: React.PropTypes.oneOf(['News', 'Photos']),
    // 指定的多個對象類型中的一個
    optionalUnion: React.PropTypes.oneOfType([
      React.PropTypes.string,
      React.PropTypes.number,
      React.PropTypes.instanceOf(Message)
    ]),
    // 指定類型組成的數組
    optionalArrayOf: React.PropTypes.arrayOf(React.PropTypes.number),
    // 指定類型的屬性構成的對象
    optionalObjectOf: React.PropTypes.objectOf(React.PropTypes.number),
    // 特定形狀參數的對象
    optionalObjectWithShape: React.PropTypes.shape({
      color: React.PropTypes.string,
      fontSize: React.PropTypes.number
    }),
    // 之後任意類型加上 `isRequired` 來使 prop 不可空。
    requiredFunc: React.PropTypes.func.isRequired,
    // 不可空的任意類型
    requiredAny: React.PropTypes.any.isRequired,  
}

四、自定義的驗證器數組

propTypes:{
    // 自定義驗證器。若是驗證失敗須要返回一個 Error 對象。不要直接
    // 使用 `console.warn` 或拋異常,由於這樣 `oneOfType` 會失效。
    customProp: function(props, propName, componentName) {
      if (!/matchme/.test(props[propName])) {
        return new Error('Validation failed!');
      }
}
相關文章
相關標籤/搜索