2017-04-23 69 views
1

在一個陣營組成部分,如果我聲明:陣營:檢測變量的PropTypes

MyComponent.propTypes = { 
    // An object that could be one of many types 
    header: PropTypes.oneOfType([ 
    PropTypes.string, 
    PropTypes.number, 
    ]), 
} 

我怎麼知道,如果header是我render方法的字符串或數字?

回答

1

實際上,如果值的類型是原始類型(字符串,數字...)之一,您可以使用@jrubins的上述方法。

對於自定義的React組件,您必須檢查相關字段.type。這裏是演示代碼:

Steps.propTypes = { 
    // must not be an empty array of Step 
    children: PropTypes.arrayOf(function(props, propName) { 
    const value = props[propName]; 
    if (value.type !== Step) { 
     return new Error('Must supply an instance of Step'); 
    } 
    }), 
}; 
1

在您的render方法中,您可以使用typeof運算符來確定header變量的類型。如果你有類似Lodash的東西,你也可以使用它的一種實用方法(_.isString,_.isNumber等)。

注意:您的評論「一個對象可能是一個...」應該重新編號爲「A 變量可能是一個...」,因爲您說它不是一個對象,而是一個字符串或一個數字。

+0

謝謝@ jrubins。 – anhldbk