1.PropTypes 类型检测
React 提供有一套类型检测的自己,通过React.PropTypes 来进行控制
class Greeting extends React.Component {
render() {
return (
<h1>Hello,{this.props.name}</h1> ); } } Greeting.propTypes = { name: React.PropTypes.string };
React.PropTypes 提供了一系列的检验器用来确保你的数据的合法性,比如说样例中的React.PropTypes.string ,如果提供了不合法的数据,在javascript 的console 中会出现警告,由于性能原因,propTypes 的使用一般是在测试阶段,不用在用户发布阶段。
以下是React.PropTypes 的一些检验器的例子
MyComponent.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,optionalSymbol: React.PropTypes.symbol,
optionalNode: React.PropTypes.node,
optionalElement: React.PropTypes.element,
optionalMessage: React.PropTypes.instanceOf(Message),
optionalEnum: React.PropTypes.oneOf(['News','Photos']),
optionalUnion: React.PropTypes.oneOfType([
React.PropTypes.string,React.PropTypes.number,React.PropTypes.instanceOf(Message)
]),
optionalArrayOf: React.PropTypes.arrayOf(React.PropTypes.number),
optionalObjectOf: React.PropTypes.objectOf(React.PropTypes.number),
optionalObjectWithShape: React.PropTypes.shape({
color: React.PropTypes.string,fontSize: React.PropTypes.number
}),
requiredFunc: React.PropTypes.func.isRequired,
requiredAny: React.PropTypes.any.isRequired,
requiredAny: React.PropTypes.xxx.isRequired,
customProp: function(props,propName,componentName) {
if (!/matchme/.test(props[propName])) {
return new Error(
'Invalid prop `' + propName + '` supplied to' +
' `' + componentName + '`. Validation failed.'
);
}
},
customArrayProp: React.PropTypes.arrayOf(function(propValue,key,componentName,location,propFullName) {
if (!/matchme/.test(propValue[key])) {
return new Error(
'Invalid prop `' + propFullName + '` supplied to' +
' `' + componentName + '`. Validation failed.'
);
}
})
};
2.defaultProps 默认属性值设置
class Greeting extends React.Component {
render() {
return (
<h1>Hello,{this.props.name}</h1>
);
}
}
Greeting.defaultProps = {
name: 'Stranger'
};
ReactDOM.render(
<Greeting />,document.getElementById('example')
);
这个默认属性的设置非常有意思,可以一定程度上减少代码复杂度
下一篇将讲React 中ref 属性的必要性
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|