2017-04-23 38 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