PropTypes使用
PropTypes防止后期代码传参数错误,所以加一个校验,
代码:
import React, {Component,PropTypes} from 'react';
import {View, Text, StyleSheet,TouchableOpacity} from 'react-native'; class CustomView extends Component { static propTypes = {
name:PropTypes.string.isRequired,//姓名 isRequired必填项
like:PropTypes.array,//爱好
age:PropTypes.number,//年龄
adult:PropTypes.bool,//是否成年
sex: PropTypes.oneOf(['man', 'woman']),//性别
eat:PropTypes.func,//吃饭
object:PropTypes.shape({a: PropTypes.string, b: PropTypes.number}),//指定形式
arrayOf: PropTypes.arrayOf(PropTypes.number),//指定类型的数组
oneOfType: PropTypes.oneOfType([//指定其中一种类型
PropTypes.string,
PropTypes.number,
]),
objectOf: PropTypes.objectOf(PropTypes.number),//指定某种对象 } eat(value){
this.props.eat("banana");
}
render() {
return (
<View style={styles.container}>
<Text>name:{this.props.name}</Text>
<Text>like:{this.props.like}</Text>
<Text>age:{this.props.age}</Text>
<Text>adult:{this.props.adult}</Text>
<Text>sex:{this.props.sex}</Text>
<Text>shape:a:{this.props.object.a}b:{this.props.object.b}</Text>
<Text>arrayOf:{this.props.arrayOf}</Text>
<Text>oneOfType:{this.props.oneOfType}</Text>
<Text>objectOf:{this.props.objectOf}</Text>
<TouchableOpacity onPress={()=>this.eat("banana")}>
<Text>eat</Text>
</TouchableOpacity>
</View>
);
} } const styles = StyleSheet.create({
container: {
flex: 1,
alignItems:'center',
justifyContent: 'center'
}, });
使用:
eat(value){
alert(value)
}
render() {
return (
<CustomView
name="lpp"
like={['画画','唱歌']}
age={19}
adult={true}
sex="man"
object={{a:"aa",b:12}}
arrayOf={[1,2,3,4,5,6]}
oneOfType="好人"
objectOf={[5,6,8,9]}
eat={(value)=>this.eat(value)}
/>
);
}
/**
any: createAnyTypeChecker(),
element: createElementTypeChecker(),
instanceOf: createInstanceTypeChecker,
node: createNodeChecker(),
object: createPrimitiveTypeChecker('object'),
symbol: createPrimitiveTypeChecker('symbol'), string: createPrimitiveTypeChecker('string'),
array: createPrimitiveTypeChecker('array'),
number: createPrimitiveTypeChecker('number'),
bool: createPrimitiveTypeChecker('boolean'),
func: createPrimitiveTypeChecker('function'),
shape: createShapeTypeChecker
oneOf: createEnumTypeChecker,
arrayOf: createArrayOfTypeChecker,
objectOf: createObjectOfTypeChecker,
oneOfType: createUnionTypeChecker, */
PropTypes使用的更多相关文章
- react Props 验证 propTypes,
<body><!-- React 真实 DOM 将会插入到这里 --><div id="example"></div> <!- ...
- React组件属性部类(propTypes)校验
React组件属性类型(propTypes)校验 Prop 验证 随着应用不断变大,保证组件被正确使用变得非常有用.为此我们引入propTypes.React.PropTypes 提供很多验证器 (v ...
- React中的PropTypes详解
propTypes用来规范props必须满足的类型,如果验证不通过将会有warn提示. React PropTypes的种类有: React.PropTypes.array // 队列 React.P ...
- 正式学习React(五) Reactjs 的 PropTypes 使用方法
propTypes 使用來規範元件Props的型別與必需狀態 var Test = React.createClass({ propTypes: { // required requiredFunc: ...
- 【react】利用prop-types第三方库对组件的props中的变量进行类型检测
1.引言--JavaScript就是一个熊孩子 1.1对于JSer们来说,js是自由的,但同时又有许多让人烦恼的地方.javascript很多时候就是这么一个熊孩子,他很多时候并不会像C和java ...
- React Native 系列(六) -- PropTypes
前言 本系列是基于React Native版本号0.44.3写的.在我们之前的通过props实现组件间传值的时候,大家有没有发现在父组件传递值过去,在子控件获取props的时候没有提示,那么如何能实现 ...
- React——props的使用以及propTypes
组件的props是只读的,组件不能修改自己的props,在React中,组件可以接受任意的props,如函数,对象,基本类型以及react元素 一.props的使用 1.一些组件并不需要知道自己的ch ...
- React的类型检测PropTypes
React.propTypes:React.PropTypes 提供很多验证器来验证传入数据的有效性,当向props传入无效数据时,JavaScript 控制台会抛出警告. ; class MyTit ...
- React文档(十五)使用propTypes进行类型检查
注意: React.PropTypes 自 React v15.5 起已弃用.请使用 prop-types 库代替. 随着你的应用的开发,你会使用类型检查的方法来捕获很多bug.对于一些应用,你可以使 ...
- PropTypes验证器
PropTypes用于对类型的验证,从而更加容易捕获bug.在React v15.5之前,它内置React.PropTypes函数帮助解决,之后放弃支持,采用prop-types库定义. import ...
随机推荐
- IE11不能使用F12功能DOM资源管理器无法使用
https://www.ludou.org/win7-ie-11-f12-bug.html 32位win7下载补丁:http://www.microsoft.com/zh-CN/download/de ...
- 根据key删除Map集合中的key-value映射
一:在遍历Map时是不可以删除key-value映射的,如果根据key删除,如下: public static void main(String[] args) { Map<String,Obj ...
- c __cplusplus详解
Code:#ifdef __cplusplusextern "C" { #endif ... #ifdef __cplusplus} #endif 解释:1.c++中定义了__cp ...
- traff.sh
#!/bin/bash #网络监控 while [ "1" ] do eth=$1 RXpre=$(cat /proc/net/dev | grep $eth | tr : &qu ...
- css---点击显示和隐藏
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- electron 主进程,和渲染进程的通信
ipcMain https://electronjs.org/docs/api/ipc-main 当在主进程中使用时,它处理从渲染器进程(网页)发送出来的异步和同步信息, 当然也有可能从主进程向渲染进 ...
- C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
一.通过WebClient获取网页内容 这是一种很简单的获取方式,当然,其它的获取方法也很简单.在这里首先要说明的是,如果为了实际项目的效率考虑,需要考虑在函数中分配一个内存区域.大概写法如下 //M ...
- MyEclipse中同时启动两个tomcat
开发的时候,有些时候需要同时启动两个项目.首先配置tomcat,方法如下:(转载自:http://bendan123812.iteye.com/blog/1716789) 一.把Tomcat复制一份并 ...
- HDU 3183 - A Magic Lamp - [RMQ][ST算法]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 Problem DescriptionKiki likes traveling. One day ...
- MYSQL数据库在Windows系统中重置root密码
1.以系统管理员身份打开cmd 2.查看MySQL是否启动: net start 3.如果启动就停止:net stop MySQL55 注:MySQL55是在我的电脑上的mysql数据库服务名 4.再 ...