每个组件都有自己的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. 记一次MongoDB性能问题

    下面文章转载自火丁笔记,原作者描述了一次MongoDB数据迁移过程中遇到的性能问题及其解决方案,中间追查问题的方法和工具值得我们学习.下面是其原文: 最近忙着把一个项目从MySQL迁移到MongoDB ...

  2. Java入门系列-09-循环结构

    这篇文章为你搞懂5个问题 while 循环如何使用 do-while 循环的使用 for 循环的使用 break.continue 的使用 循环结构的嵌套使用 生活中有很多事情需要我们重复的去做,比如 ...

  3. nyoj 211——Cow Contest——————【floyd传递闭包】

    Cow Contest 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 N (1 ≤ N ≤ 100) cows, conveniently numbered 1.. ...

  4. JS获取鼠标位置,兼容IE FF

    由于Firefox和IE等浏览器之间对js解释的方式不一样,firefox下面获取鼠标位置不能够直接使用clientX来获取.网上说的一般都是触发mousemove事件才行.我这里有两段代码,思路都一 ...

  5. c#-IO和序列化操作

    IO 用到的命名空间:using System.IO; 文件和目录的管理! File类 FileInfo类 Directory类 DirectoryInfo类 操作文件的类! FileStream{ ...

  6. SpringSecurity 3.2入门(1)框架介绍

    关于Spring Security Spring Security,这是一种基于Spring AOP和Servlet过滤器 [7] 的安全框架.它提供全面的安全性解决方案,同时在 Web 请求级和方法 ...

  7. node.js压缩和解压缩

    推荐一个极其简单.及其好用的node.js的压缩和解压缩类库  compressing 支持格式: tar.gzip.tgz.zip 以zip为例,tar,tgz和gzip与zip相同. 压缩文件: ...

  8. hdu 1394 逆序数(线段树)

    http://acm.hust.edu.cn/vjudge/problem/15764 http://blog.csdn.net/libin56842/article/details/8531117 ...

  9. scss-@for 指令

    此指令用于循环输出,具有两种循环方式,下面分别做一下介绍. (1).@for $var from <start> through <end>: 此种方式的遍历索引区间是[sta ...

  10. 区域可编辑contenteditable的问题总结

    一.如何在可编辑区域div的光标处通过点击事件来添加文本内容 下面的例子是可编辑div的区域添加文本内容和判断光标位置的方法 <!DOCTYPE html> <html lang=& ...