你如何validationReactJS中嵌套对象的PropTypes?
我使用一个数据对象作为我的ReactJS组件的道具。
<Field data={data} /> 我知道它很容易validationPropTypes对象本身:
 propTypes: { data: React.PropTypes.object } 
但是如果我想validation里面的值呢? 即。 data.id,data.title?
 props[propName]: React.PropTypes.number.required // etc... 
	
 您可以使用React.PropTypes.shape来validation属性: 
 propTypes: { data: React.PropTypes.shape({ id: React.PropTypes.number.isRequired, title: React.PropTypes.string }) } 
更新
 正如@Chris在评论中指出的,从React版本15.5.0开始, React.PropTypes已经转移到了包装prop-types 。 
 import PropTypes from 'prop-types'; propTypes: { data: PropTypes.shape({ id: PropTypes.number.isRequired, title: PropTypes.string }) } 
更多信息
 如果React.PropTypes.shape没有给你你想要的types检查级别,看看tcomb-react 。 
 它提供了一个toPropTypes()函数,通过使用React对定义自定义propTypesvalidation器的支持来validation使用tcomb库定义的模式,并使用tcomb-validation运行validation 。 
来自其文档的基本示例 :
 // define the component props var MyProps = struct({ foo: Num, bar: subtype(Str, function (s) { return s.length <= 3; }, 'Bar') }); // a simple component var MyComponent = React.createClass({ propTypes: toPropTypes(MyProps), // <--- ! render: function () { return ( <div> <div>Foo is: {this.props.foo}</div> <div>Bar is: {this.props.bar}</div> </div> ); } });