Props验证对于组件的正确使用是一种非常有用的方式。它可以避免随着你的应用的程序越来越复杂从而出现很多的bug和问题。并且,它还可以是你的程序变得更易读。
那如何对Props进行验证呢,其实很简单,React为我们提供了PropTypes以供验证使用。当我们向Props传入的数据无效(也就是向Props传入的数据类型和验证的数据类型不符)就会在控制台发出警告信息。
看下面的例子
var Propsva = React.createClass({ propTypes: { optionalArray: React.PropTypes.array, optionalBool: React.PropTypes.bool, optionalFunc: React.PropTypes.func, optionalNumber: React.PropTypes.number, optionalObject: React.PropTypes.object, optionalString: React.PropTypes.string, }, getDefaultProps:function(){ return { optionalArray: ['onmpw.com','——迹忆博客'], optionalBool: true, optionalFunc: function (arg) { console.log(arg); }, optionalNumber: 3, optionalObject: { object1: "objectvalue1", object2: "objectvalue2", object3: "objectvalue3", }, optionalString: "My Onmpw", }; }, render:function(){ return ( <div> <h3>Array:{this.props.optionalArray}</h3> <h3>Bool:{this.props.optionalBool}</h3> <h3 onClick={this.props.optionalFunc}>Func:click</h3> <h3>Number:{this.props.optionalNumber}</h3> <h3>Object:{this.props.optionalObject.object1}</h3> <h3>Object:{this.props.optionalObject.object2}</h3> <h3>Object:{this.props.optionalObject.object3}</h3> <h3>String:{this.props.optionalString}</h3> </div> ); }});ReactDOM.render( <Propsva />, document.getElementById('content'));
当然,上面这个例子是没有错误的。下面我们将上面的例子进行修改
getDefaultProps:function(){ return { optionalArray: 'onmpw.com——迹忆博客', optionalBool: true, optionalFunc: function (arg) { console.log(arg); }, optionalNumber: 3, optionalObject: { object1: "objectvalue1", object2: "objectvalue2", object3: "objectvalue3", }, optionalString: "My Onmpw", };},
然后,我们会在控制台中发现有如下的警告
Warning: Failed propType: Invalid prop `optionalArray` of type `string` supplied to `Propsva`, expected `array`.
这是一种情况,验证Props的数据类型。还有一种情况就是验证Props是否有值。看下面的代码
propTypes: { optionalArray: React.PropTypes.array.isRequired, optionalBool: React.PropTypes.bool.isRequired, optionalFunc: React.PropTypes.func, optionalNumber: React.PropTypes.number, optionalObject: React.PropTypes.object, optionalString: React.PropTypes.string,},
新闻热点
疑难解答
图片精选