每个组件都有自己的props参数,这参数是从父组件接收的一些属性,那么如何对参数的类型作校验。如何定义参数的默认值。这里涉及到两个基础的概念,叫做proptypes 和 defaultprops。子组件要接收的类型是固定,父组件不能乱传。比如显示的是个字符串,父组件就不能传个函数过来,不然代码是有问题的。这是时候就要使用proptyps进行一个强校验。
使用proptypes,第一步就要引用proptypes。
import Proptyps from 'prop-types';
TodoItem.propTypes = {
  content: Proptyps.string,
  handleItemDelete: Proptyps.func,
  index: Proptyps.number
}
一般开发的时候都建议把Proptyps写上去,这样传值不对的时候,就会有一个明显的警告。
如果在子组件写一个父组件传值中没有的参数,代码没有任何的错误,只不过参数没有接收,不会显示而已,这个时候对于没有传递的参数,是不会去做校验,如果这个参数是必须要的,可以强制去做校验,例如
import Proptyps from 'prop-types';
TodoItem.propTypes = {
  test: Proptyps.string.isRequired
}
isRequired表示父组件必须要向子组件传递,不传递,会报警告。
有的时候子组件要求父组件必须要传这个test,但有时候父组件实在没办法传这个test.那么可以给test定义一个默认值。
import Proptyps from 'prop-types';
TodoItem.propTypes = {
  test: Proptyps.string.isRequired
}
TodoItem.defaultProps = {
  test: 'hello world'
}
这样就要求父组件必须传,不传就显示默认值。
假设现在我有个这样的需求,这个参数不仅可以是string类型,还可以是number类型。
import Proptyps from 'prop-types';
TodoItem.propTypes = {
  content: Proptyps.oneOfType([Proptyps.string, Proptyps.number])
}

下面这个arrayOf表示content是个数组,数组里面的内容可以是string,也可以是number

import Proptyps from 'prop-types';
TodoItem.propTypes = {
  content: Proptyps.arrayOf(Proptyps.string, Proptyps.number)
}

react中PropTypes与DefaultProps的应用的更多相关文章

  1. react中prop-types的使用

    什么是prop-types?prop代表父组件传递过来的值,types代表类型.简单来说就是用来校验父组件传递过来值的类型 import PropTypes from 'prop-types'; To ...

  2. React中静态类型校验 - PropTypes

    1.基本说明PropTypes定义为组件类自身的属性,用以定义prop的类型.在开发模式下,当提供一个不合法的值作为prop时,控制台会出现警告: 在产品模式下,为了性能考虑应忽略propTypes ...

  3. React中使用 PropTypes 进行类型检查

    官方文档学习链接:https://zh-hans.reactjs.org/docs/typechecking-with-proptypes.html import React, { Component ...

  4. react PropTypes 与 DefaultProps

    PropTypes 与 DefaultProps import React ,{ Component } from 'react'; import PropTypes from 'prop-types ...

  5. React中props

    今天让我们开启新的篇章好吧,来搞一搞React,以下所有操作都是我个人的一些理解,如果有错吴还请指出,想要看更全的可以去React官网可能一下子好吧 昨天按摩没到位,导致今天身体不太行,撸码千万别苦了 ...

  6. React中的三大属性

    一.前言: 属性1:state 属性2:props 属性3:ref 与事件处理 二.主要内容: 属性1:state 1,认识: 1) state 是组件对象中最重要的属性,值是一个对象(可以包含多个数 ...

  7. React中state和props分别是什么?

    整理一下React中关于state和props的知识点. 在任何应用中,数据都是必不可少的.我们需要直接的改变页面上一块的区域来使得视图的刷新,或者间接地改变其他地方的数据.React的数据是自顶向下 ...

  8. [ES6]react中使用es6语法

    前言 不论是React还是React-native,facebook官方都推荐使用ES6的语法,没在项目中使用过的话,突然转换过来会遇到一些问题,如果还没有时间系统的学习下ES6那么注意一些常见的写法 ...

  9. react中使用截图组件Cropper组件

    --最近项目用react,学习react并使用cropper组件裁剪图片. (这里开发组件不够统一有用tsx(TypeScript + xml/html)写的组件,有用jsx(javascript+x ...

随机推荐

  1. 在Vue中由后台数据循环生成多选框CheckBox时的注意事项

    多选框是一种非常常见的功能,有时候我们会根据后台返回的数据进行多选框渲染,之前做项目时遇到循环生成多选框时,v-model绑定的值会随着选中与取消改变,但页面却不会变化 的情况,后来测试了一下,发现多 ...

  2. Centos 添加swap

    swap是linux系统的虚拟内存,物理内存不足时,会用到.生产环境,最好添加上,以防内存异常暴增时,系统出现问题. 查看系统是否有swap分区,执行如下命令,若Swap那一行都为0,则表示没有Swa ...

  3. Oracle ASM 常用命令

    01, 查看磁盘路径 select name,path,group_number from v$asm_disk_stat; 02, 查看磁盘组信息 select state,name,type,to ...

  4. bootstrap日历插件地址

    http://www.bootcss.com/p/bootstrap-datetimepicker/

  5. 使用SVN进行源码管理

    阅读目录: 1.SVN服务端配置 1.1 创建版本库 1.2 创建用户 1.3 设置用户权限 2.SVN客户端使用 2.1 向SVN服务器中导入源码 2.1.1 直接通过TortoiseSVN向SVN ...

  6. 在Spark shell中基于Alluxio进行wordcount交互式分析

    Spark是一个分布式内存计算框架,可部署在YARN或者MESOS管理的分布式系统中(Fully Distributed),也可以以Pseudo Distributed方式部署在单个机器上面,还可以以 ...

  7. jQuery中的动画——《锋利的JQuery》

    自CSS3以来,主流网站开始偏向于扁平风格和动画效果,这时就可以jQuery的动画就可以发挥其长处了,灵活的应用其动画API,让我们可以设计出很多绚丽的效果.下面,让我们来列举一些jQuery常用的动 ...

  8. django(6)model表语句操作、Form操作、序列化操作

    1.model建表操作之创建索引.元数据 # 单表操作,创建表 class User(models.Model): name = models.CharField(max_length=32) ema ...

  9. 使用Access作数据库

    import java.sql.*; public class ConnectAccess { public static void main(String args[]){ ConnectAcces ...

  10. 1229:密码截获----java

    题目描述 Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码 进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解.比 ...