在一个阵营组成部分,如果我声明:阵营:检测变量的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