Reactjs 的 PropTypes 使用方法
propTypes 使用來規範元件Props的型別與必需狀態
- var Test = React.createClass({
- propTypes: {
- // required
- requiredFunc: React.PropTypes.func.isRequired,
- requiredAny: React.PropTypes.any.isRequired,
- // primitives, optional by default
- bool: React.PropTypes.bool,
- func: React.PropTypes.func,
- number: React.PropTypes.number,
- string: React.PropTypes.string,
- },
- render:function(){
- return <div/>
- }
- });
- var component = React.render(
- <Test requiredFunc="bar" bool="true" requiredAny="a"/>,
- document.body
- );
若沒有按照規範,會顯示警告
線上測試:http://jsbin.com/suweke/3/edit
React.PropTypes 的種類
- React.PropTypes.array // 陣列
- React.PropTypes.bool.isRequired // Boolean 且必要。
- React.PropTypes.func // 函式
- React.PropTypes.number // 數字
- React.PropTypes.object // 物件
- React.PropTypes.string // 字串
- React.PropTypes.node // 任何類型的: numbers, strings, elements 或者任何這種類型的陣列
- React.PropTypes.element // React 元素
- React.PropTypes.instanceOf(XXX) // 某種XXX類別的實體
- React.PropTypes.oneOf(['foo', 'bar']) // 其中一個字串
- React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.array]) // 其中一種格式類型
- React.PropTypes.arrayOf(React.PropTypes.string) // 某種類型的陣列(字串類型)
- React.PropTypes.objectOf(React.PropTypes.string) // 具有某種屬性類型的物件(字串類型)
- React.PropTypes.shape({ // 是否符合指定格式的物件
- color: React.PropTypes.string,
- fontSize: React.PropTypes.number
- });
- React.PropTypes.any.isRequired // 可以是任何格式,且必要。
- // 自定義格式(當不符合的時候,會顯示Error)
- // 不要用`console.warn` 或者 throw, 因为它在`oneOfType` 的情况下無效。
- customPropType: function(props, propName, componentName) {
- if (!/^[0-9]/.test(props[propName])) {
- return new Error('Validation failed!');
- }
- }
getDefaultProps
當父元件沒有提供props的屬性時,可以採用getDefaultProps,預設props屬性的方式,讓元件使用預設的設定值,確保有props帶入。
- var ComponentWithDefaultProps = React.createClass({
- getDefaultProps : function () {
- return {
- value : 'default value'
- };
- },
- /* ... */
- });
Reactjs 的 PropTypes 使用方法的更多相关文章
- 正式学习React(五) Reactjs 的 PropTypes 使用方法
propTypes 使用來規範元件Props的型別與必需狀態 var Test = React.createClass({ propTypes: { // required requiredFunc: ...
- Reactjs组件中的方法为什么绑定this?
前言:Reactjs中的定义的方法其实是基于实例的原型方法:es6默认严格模式 问题:在Reactjs组件中写入以下代码,那么执行结果会是什么呢? ··· 结果是这样的: 对的,你没看错,不是do ...
- react的类型检查PropTypes自React v15.5起已弃用,请使用prop-types
最近使用React的类型检查PropTypes时,遇到错误:TypeError: Cannot read property 'array' of undefined 看了下自己的React版本: ...
- React组件属性/方法/库属性
1. propTypes 用于进行props的类型检查:来自于prop-types库. // V15.5之后 import PropTypes from 'prop-types'; 该方法适用于函数组 ...
- react9 生命周期
<body><!-- React 真实 DOM 将会插入到这里 --><div id="example"></div> <!- ...
- React之JSX入门
React是由ReactJS与React Native组成,其中ReactJS是Facebook开源的一个前端框架,React Native 是ReactJS思想在native上的体现! JSX并不是 ...
- ReactNative——生命周期
1.创建阶段 getDefaultProps:处理props的默认值 在react.createClass调用 //在创建类的时候被调用 this.props该组件的默认属性 2.实例化阶段 Reac ...
- 010_React-组件的生命周期详解
ReactJS 的核心思想是组件化,即按功能封装成一个一个的组件,各个组件维护自己的状态和 UI,当状态发生变化时,会自定重新渲染整个组件,多个组件一起协作共同构成了 ReactJS 应用. 为了能够 ...
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
随机推荐
- 201621123080 《Java程序设计》第10周学习总结
201621123080 <Java程序设计>第10周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...
- 【 android】When an app is installed on the external storage
When an app is installed on the external storage: The .apk file is saved to the external storage, bu ...
- python操作Excel模块openpyxl
https://www.cnblogs.com/zeke-python-road/p/8986318.html # -*- coding: utf-8 -*-from openpyxl import ...
- Linux入门学习笔记2:终端命令
LINUX操作系统学习 命令 附带建 cd .. 当前路径的上一层 ../.. 当前路径的上两层 . 当前路径 - 跳转到上一次所在路径 ...
- and和or运算
and和or的运算,从前向后按顺序计算,当True结果遇到or就停止,返回True:当False结果遇到and就停止,返回False:False遇到or,继续走:True遇到and,继续走. > ...
- selenium2截图ScreenShot的使用
截图是做测试的基本技能,在有BUG的地方,截个图,保留失败的证据,也方便去重现BUG.所以,在自动化的过程中,也要能截图,也要能在我们想要截取的地方去截图,且能在错误产生时,自动的截图. 示例: 脚本 ...
- luogu2774 方格取数问题
最大点权独立集,参见胡伯涛论文 #include <iostream> #include <cstring> #include <cstdio> #include ...
- TensorFlow——零碎语法知识点
张量(tensor) 张量 是图中计算节点的运算结果的引用,由name,shape,type三个属性构成. 张量的命名 可以以“name:src_output”的形式给出,node为计算节点名称,sr ...
- Django数据库的查看、删除,创建多张表并建立表之间关系
配置以下两处,可以方便我们直接右键运行tests.py一个文件,实现对数据库操作语句的调试: settings里面的设置: #可以将Django对数据库的操作语法,能输出对应的的sql语句 LOGGI ...
- TOJ1698: Balanced Lineup
Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same ...