[toc]
## usage
### 支持常用的七大JS数据类型
你可以给React中的每个`prop`规定一个JS数据类型。
```
optionalArray: PropTypes.array,
optionalBool: PropTypes.bool,
optionalFunc: PropTypes.func,
optionalNumber: PropTypes.number,
optionalObject: PropTypes.object,
optionalString: PropTypes.string,
optionalSymbol: PropTypes.symbol,
```
任何可被渲染的元素(包括数字、字符串、reactElement或数组)
```
optionalNode: PropTypes.node,
```
## react element
```
optionalElement: PropTypes.element,
```
## 某一个类的实例
```
optionalMessage: PropTypes.instanceOf(Message)
```
## 枚举值
```
optionalEnum: PropTypes.oneOf(['News', 'Photos'])
```
## 特定某一类型的对象
```
optionalObjectOf: PropTypes.objectOf(PropTypes.number),
```
## 特定某些类型的对象
An object that could be one of many types
```
optionalUnion: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
PropTypes.instanceOf(Message)
]),
```
## 特定具有某些属性的对象
```
optionalObjectWithShape: PropTypes.shape({
color: PropTypes.string,
fontSize: PropTypes.number
}),
```
## 特定某一种类型的数组
```
optionalArrayOf: PropTypes.arrayOf(PropTypes.number),
```
## any type
```
requiredAny: PropTypes.any.isRequired,
```
## isRequired
## 自定义验证器
你也可以指定一个自定义验证器。它应该在验证失败时返回一个错误对象(`new Error`),而不是使用`console.warn`或则`throw`,这在`oneOfType`里不会起作用。
```
//props当前组件接收的所有属性
//propName 当前验证的属性的名字
//componentName 当前组件的名字
customProp: function(props, propName, componentName) {
if (!/matchme/.test(props[propName])) {
return new Error(
'Invalid prop `' + propName + '` supplied to' +
' `' + componentName + '`. Validation failed.'
);
}
},
```
![](https://box.kancloud.cn/b60267a63e28086a2019e024579004e8_534x80.png)
### 你同样可以在`arrayOf`和`objectOf`中使用自定义验证器。
第一个参数是这个属性对象/数组,第二个参数为key值
```
customArrayProp: PropTypes.arrayOf(function(propValue, key, componentName, location, propFullName) {
if (!/matchme/.test(propValue[key])) {
return new Error(
'Invalid prop `' + propFullName + '` supplied to' +
' `' + componentName + '`. Validation failed.'
);
}
})
};
```
- 空白目录
- 01.JSX,了解一下?
- JSX与虚拟DOM
- React
- 02.React文档精读(上)`
- React路由
- 关于BrowserRouter
- 关于Route
- 应用
- 权限认证
- case1
- context
- 新context
- 03.React路由
- 04.Diff
- 05.styled-components
- redux设计思想与API
- redux实现1
- 06.redux2
- 06.redux3
- 关于状态初始化
- saga
- 新版
- 使用saga进行业务逻辑开发
- react-router-redux
- React性能优化
- immutable使用
- 未整理
- FAQ
- 常用中间件
- pureComponent
- 项目相关总结
- antd分尸
- 按需加载
- ReactWithoutJSX
- 我的组件库
- C领域
- 用户接口
- htmlType
- style
- show
- conjure
- grid
- inject
- stop
- 内部接口
- 衍生组件
- Button
- 报错集锦
- ReactAPI
- 类上的那些属性
- prop-types
- React.createElement
- React.cloneElement
- React.Children和props.children
- react元素和react组件关于作为children方面的那些问题
- react组件与虚拟dom
- ref