[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.'
);
}
},
```

### 你同樣可以在`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