当前位置: 首页 > news >正文

React Native声明属性和属性确认

属性声明

因为用React Native创建的自定义组件可以复用, 我们开发过程中可能一个项目组有多个人同时开发,其他同事可能会用到我们自定义的组件, 但是他们使用的时候很容易忘记使用某些属性,这时候我们应该在自定义组件中声明一些属性。

//自定义组件
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.PropTypes.array;
React.PropTypes.bool;
React.PropTypes.func;
React.PropTypes.number;
React.PropTypes.object;
React.PropTypes.string;
复制代码

二、要求属性是可渲染节点 指数字,字符串,数字数组,字符串数组.

React.PropTypes.node
复制代码

要求属性是某个React元素

React.PropTypes.element
复制代码

要求属性是某个指定类的实例

React.PropTypes.instanceOf(NameOfClass)
复制代码

要求属性取值为几个特定的值

React.PropTypes.oneOf(['值1','值2'])
复制代码

属性可以为指定类型中的任意一个

React.PropTypes.oneOfType([
    React.PropTypes.node,
    React.PropTypes.string  
])
复制代码

属性可以为指定类型的数组

React.PropTypes.arrayOf(React.PropTypes.number)
复制代码

要求属性是一个有指定成员变量的对象 下面的语句要求传入的对象有一个成员变量是number类型.

React.PropTypes.objectOf(React.PropTypes.number)
复制代码

要求属性是一个指定构成方式的对象

React.PropTypes.shape({
      color : React.PropTypes.string,
      fontSize: React.PropTypes.number
})
复制代码

属性可以为任意类型

React.PropTypes.any
复制代码

上面的10种语法,都可以通过在后面加上isRequired声明它是必需的.

属性默认值

我们还可以给属性指定一个默认值,当没有传递该属性时使用默认值,如:

ConfirmDialog.defaultProps = {
    promptToUser: '确定吗?'
};
复制代码

同时记得要将指定 promptToUser为必须的'isRequired' 去掉.

更多精彩请关注微信公众账号likeDev,公众账号名称:爱上Android。

相关文章:

  • JavaScript深入之词法作用域和动态作用域
  • 竞赛回忆录
  • 简单团队-爬取豆瓣电影TOP250-需求分析
  • JS实现简单的MVC模式开发小游戏
  • 虚拟就Ubuntu 14.0.4 安装配置jenkins
  • 大数据学习(2)HDFS文件管理
  • Mac 10.12安装截图工具Jietu
  • Centos 搭建Mysql-Proxy 读写分离
  • 【小白学云计算】10分钟搭建一台web服务器!(就是快!)
  • [docker]docker网络-直接路由模式
  • SQL 简介
  • Jenkins 集成 Sonar
  • 初识HTTP
  • jfinal-admin 后台框架永久开源
  • 数据库索引实例之二consistent gets
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • AWS实战 - 利用IAM对S3做访问控制
  • canvas 绘制双线技巧
  • eclipse的离线汉化
  • HashMap ConcurrentHashMap
  • Javascript Math对象和Date对象常用方法详解
  • java中的hashCode
  • Linux快速复制或删除大量小文件
  • nginx 负载服务器优化
  • nodejs实现webservice问题总结
  • October CMS - 快速入门 9 Images And Galleries
  • Shell编程
  • SpriteKit 技巧之添加背景图片
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Transformer-XL: Unleashing the Potential of Attention Models
  • VuePress 静态网站生成
  • Web标准制定过程
  • 当SetTimeout遇到了字符串
  • 入门到放弃node系列之Hello Word篇
  • 设计模式(12)迭代器模式(讲解+应用)
  • 详解NodeJs流之一
  • 消息队列系列二(IOT中消息队列的应用)
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 移动端唤起键盘时取消position:fixed定位
  • 用element的upload组件实现多图片上传和压缩
  • 正则表达式-基础知识Review
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • $jQuery 重写Alert样式方法
  • (07)Hive——窗口函数详解
  • (8)STL算法之替换
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (Python) SOAP Web Service (HTTP POST)
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (论文阅读11/100)Fast R-CNN
  • (区间dp) (经典例题) 石子合并
  • (一)RocketMQ初步认识
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net6使用Sejil可视化日志
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)