在一個陣營組成部分,如果我聲明:陣營:檢測變量的PropTypes
MyComponent.propTypes = {
// An object that could be one of many types
header: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
]),
}
我怎麼知道,如果header
是我render
方法的字符串或數字?
在一個陣營組成部分,如果我聲明:陣營:檢測變量的PropTypes
MyComponent.propTypes = {
// An object that could be one of many types
header: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
]),
}
我怎麼知道,如果header
是我render
方法的字符串或數字?
實際上,如果值的類型是原始類型(字符串,數字...)之一,您可以使用@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');
}
}),
};
在您的render
方法中,您可以使用typeof
運算符來確定header
變量的類型。如果你有類似Lodash的東西,你也可以使用它的一種實用方法(_.isString,_.isNumber等)。
注意:您的評論「一個對象可能是一個...」應該重新編號爲「A 變量可能是一個...」,因爲您說它不是一個對象,而是一個字符串或一個數字。
謝謝@ jrubins。 – anhldbk