属性声明
因为用React Native创建的自定义组件可以复用,我们开发过程中可能一个项目组有多个人同时开发,其他同事可能会用到我们自定义的组件,但是他们使用的时候很容易忘记使用某些属性,这时候我们应该在自定义组件中声明一些属性。
@H_403_4@//自定义组件 export default class ConfirmDialog extends Component { //.... } ConfirmDialog.propTypes = { userConfirmed: React.PropTypes.func.isrequired,userCanceled: React.PropTypes.func.isrequired,amIStillAlive: React.PropTypes.func.isrequired,promptToUser:React.PropTypes.string.isrequired };上面声明的属性都是 isrequired, 如果不传递这些属性程序会在开发阶段出现警告,开发阶段需要我们进行属性确认。
属性确认
属性确认只在开发阶段有效,上面我们声明了两种属性类型确认——func (函数),和string(字符串)。下面再来看看属性确认的语法:
一、要求属性是JavaScript基本类型
二、要求属性是可渲染节点
指数字,字符串,数字数组,字符串数组.
要求属性是某个React元素
@H_403_4@React.PropTypes.element要求属性是某个指定类的实例
@H_403_4@React.PropTypes.instanceOf(NameOfClass)要求属性取值为几个特定的值
@H_403_4@React.PropTypes.oneOf(['值1','值2'])属性可以为指定类型中的任意一个
@H_403_4@React.PropTypes.oneOfType([ React.PropTypes.node,React.PropTypes.string ])属性可以为指定类型的数组
@H_403_4@React.PropTypes.arrayOf(React.PropTypes.number)要求属性是一个有指定成员变量的对象
下面的语句要求传入的对象有一个成员变量是number类型.
要求属性是一个指定构成方式的对象
@H_403_4@React.PropTypes.shape({ color : React.PropTypes.string,fontSize: React.PropTypes.number })属性可以为任意类型
@H_403_4@React.PropTypes.any上面的10种语法,都可以通过在后面加上isrequired声明它是必需的.
属性默认值
我们还可以给属性指定一个默认值,当没有传递该属性时使用默认值,如:
@H_403_4@@H_502_192@ConfirmDialog.defaultProps = { promptToUser: '确定吗?' };同时记得要将指定 promptToUser为必须的’isrequired’ 去掉.