propTypes 使用來規範元件Props的型別與必需狀態

  1. var Test = React.createClass({
  2. propTypes: {
  3. // required
  4.  
  5. requiredFunc: React.PropTypes.func.isRequired,
  6. requiredAny: React.PropTypes.any.isRequired,
  7.  
  8. // primitives, optional by default
  9.  
  10. bool: React.PropTypes.bool,
  11. func: React.PropTypes.func,
  12. number: React.PropTypes.number,
  13. string: React.PropTypes.string,
  14. },
  15. render:function(){
  16. return <div/>
  17. }
  18. });
  19.  
  20. var component = React.render(
  21. <Test requiredFunc="bar" bool="true" requiredAny="a"/>,
  22. document.body
  23. );

若沒有按照規範,會顯示警告

線上測試:http://jsbin.com/suweke/3/edit

React.PropTypes 的種類

  1. React.PropTypes.array // 陣列
  2.  
  3. React.PropTypes.bool.isRequired // Boolean 且必要。
  4.  
  5. React.PropTypes.func // 函式
  6.  
  7. React.PropTypes.number // 數字
  8.  
  9. React.PropTypes.object // 物件
  10.  
  11. React.PropTypes.string // 字串
  12.  
  13. React.PropTypes.node // 任何類型的: numbers, strings, elements 或者任何這種類型的陣列
  14.  
  15. React.PropTypes.element // React 元素
  16.  
  17. React.PropTypes.instanceOf(XXX) // 某種XXX類別的實體
  18.  
  19. React.PropTypes.oneOf(['foo', 'bar']) // 其中一個字串
  20.  
  21. React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.array]) // 其中一種格式類型
  22.  
  23. React.PropTypes.arrayOf(React.PropTypes.string) // 某種類型的陣列(字串類型)
  24.  
  25. React.PropTypes.objectOf(React.PropTypes.string) // 具有某種屬性類型的物件(字串類型)
  26.  
  27. React.PropTypes.shape({ // 是否符合指定格式的物件
  28.  
  29. color: React.PropTypes.string,
  30. fontSize: React.PropTypes.number
  31. });
  32. React.PropTypes.any.isRequired // 可以是任何格式,且必要。
  33.  
  34. // 自定義格式(當不符合的時候,會顯示Error)
  35.  
  36. // 不要用`console.warn` 或者 throw, 因为它在`oneOfType` 的情况下無效。
  37.  
  38. customPropType: function(props, propName, componentName) {
  39. if (!/^[0-9]/.test(props[propName])) {
  40. return new Error('Validation failed!');
  41. }
  42. }

getDefaultProps

當父元件沒有提供props的屬性時,可以採用getDefaultProps,預設props屬性的方式,讓元件使用預設的設定值,確保有props帶入。

  1. var ComponentWithDefaultProps = React.createClass({
  2. getDefaultProps : function () {
  3. return {
  4. value : 'default value'
  5. };
  6. },
  7. /* ... */
  8. });

Reactjs 的 PropTypes 使用方法的更多相关文章

  1. 正式学习React(五) Reactjs 的 PropTypes 使用方法

    propTypes 使用來規範元件Props的型別與必需狀態 var Test = React.createClass({ propTypes: { // required requiredFunc: ...

  2. Reactjs组件中的方法为什么绑定this?

    前言:Reactjs中的定义的方法其实是基于实例的原型方法:es6默认严格模式   问题:在Reactjs组件中写入以下代码,那么执行结果会是什么呢? ··· 结果是这样的: 对的,你没看错,不是do ...

  3. react的类型检查PropTypes自React v15.5起已弃用,请使用prop-types

    最近使用React的类型检查PropTypes时,遇到错误:TypeError: Cannot read property 'array' of undefined 看了下自己的React版本:    ...

  4. React组件属性/方法/库属性

    1. propTypes 用于进行props的类型检查:来自于prop-types库. // V15.5之后 import PropTypes from 'prop-types'; 该方法适用于函数组 ...

  5. react9 生命周期

    <body><!-- React 真实 DOM 将会插入到这里 --><div id="example"></div> <!- ...

  6. React之JSX入门

    React是由ReactJS与React Native组成,其中ReactJS是Facebook开源的一个前端框架,React Native 是ReactJS思想在native上的体现! JSX并不是 ...

  7. ReactNative——生命周期

    1.创建阶段 getDefaultProps:处理props的默认值 在react.createClass调用 //在创建类的时候被调用 this.props该组件的默认属性 2.实例化阶段 Reac ...

  8. 010_React-组件的生命周期详解

    ReactJS 的核心思想是组件化,即按功能封装成一个一个的组件,各个组件维护自己的状态和 UI,当状态发生变化时,会自定重新渲染整个组件,多个组件一起协作共同构成了 ReactJS 应用. 为了能够 ...

  9. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

随机推荐

  1. 201621123080 《Java程序设计》第10周学习总结

    201621123080 <Java程序设计>第10周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...

  2. 【 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 ...

  3. python操作Excel模块openpyxl

    https://www.cnblogs.com/zeke-python-road/p/8986318.html # -*- coding: utf-8 -*-from openpyxl import ...

  4. Linux入门学习笔记2:终端命令

    LINUX操作系统学习 命令   附带建     cd   .. 当前路径的上一层       ../.. 当前路径的上两层       . 当前路径       - 跳转到上一次所在路径       ...

  5. and和or运算

    and和or的运算,从前向后按顺序计算,当True结果遇到or就停止,返回True:当False结果遇到and就停止,返回False:False遇到or,继续走:True遇到and,继续走. > ...

  6. selenium2截图ScreenShot的使用

    截图是做测试的基本技能,在有BUG的地方,截个图,保留失败的证据,也方便去重现BUG.所以,在自动化的过程中,也要能截图,也要能在我们想要截取的地方去截图,且能在错误产生时,自动的截图. 示例: 脚本 ...

  7. luogu2774 方格取数问题

    最大点权独立集,参见胡伯涛论文 #include <iostream> #include <cstring> #include <cstdio> #include ...

  8. TensorFlow——零碎语法知识点

    张量(tensor) 张量 是图中计算节点的运算结果的引用,由name,shape,type三个属性构成. 张量的命名 可以以“name:src_output”的形式给出,node为计算节点名称,sr ...

  9. Django数据库的查看、删除,创建多张表并建立表之间关系

    配置以下两处,可以方便我们直接右键运行tests.py一个文件,实现对数据库操作语句的调试: settings里面的设置: #可以将Django对数据库的操作语法,能输出对应的的sql语句 LOGGI ...

  10. TOJ1698: Balanced Lineup

    Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same ...