每个组件都有自己的props参数,这参数是从父组件接收的一些属性。那我们应该如何对参数的类型做校验,如何定义参数的默认值呢?

1.使用PropTypes校验父组件传过来的参数是否合法

import PropTypes from 'prop-types';
TodoItem.propTypes = {
content: PropTypes.string,
handleItemDelete: PropTypes.func,
index: PropTypes.number
}

如上面代码所示,先引用 proptypes,再为 TodoItem 组件校验从父组件接收过来的参数。一般开发的时候建议把 PropTypes 写上,这样传值不对的时候,就会有一个明显的警告,不容易遇到坑。

如果在子组件写了一个父组件传值中没有的参数,代码不会报任何错误,只不过参数没有接收,不会显示而已。对于没有传递过来的参数,子组件是不会进行校验的,但如果这个参数是必要的,我们可以进行强制校验

    test: PropTypes.string.isRequired

isRequired 表示父组件必须要向子组件传递。

2. 使用 DefaultProps 给参数设置默认值

如果子组件要求父组件必须向子组件传递这个参数,但父组件没办法传递这个参数,可以给这个参数设置一个默认值。

import PropTypes from 'prop-types';
TodoItem.propTypes = {
content: PropTypes.string,
handleItemDelete: PropTypes.func,
index: PropTypes.number,
test: PropTypes.string.isRequired
}
TodoItem.defaultProps = {
test: 'hello~'
}

3. 如果要求这个参数不仅可以是 string 类型, 也可以是 number 类型

import PropTypes from 'prop-types';
TodoItem.propTypes = {
test: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
}

arrayOf表示test是一个数组,数组里面的内容可以是string,也可以是number

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

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

  1. react中使用prop-types检测props数据类型

    一.为什么使用prop-types 在多人开发时,当被人使用自己定义的组件时,有可能出现类型传错的情况,而在自己的组件上加上prop-types,他可以对父组件传来的props进行检查,加入父组件中想 ...

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

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

  3. React中的PropTypes详解

    propTypes用来规范props必须满足的类型,如果验证不通过将会有warn提示. React PropTypes的种类有: React.PropTypes.array // 队列 React.P ...

  4. react中PropTypes与DefaultProps的应用

    每个组件都有自己的props参数,这参数是从父组件接收的一些属性,那么如何对参数的类型作校验.如何定义参数的默认值.这里涉及到两个基础的概念,叫做proptypes 和 defaultprops.子组 ...

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

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

  6. 【react】利用prop-types第三方库对组件的props中的变量进行类型检测

    1.引言--JavaScript就是一个熊孩子   1.1对于JSer们来说,js是自由的,但同时又有许多让人烦恼的地方.javascript很多时候就是这么一个熊孩子,他很多时候并不会像C和java ...

  7. react PropTypes 与 DefaultProps

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

  8. React中props

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

  9. React中的三大属性

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

随机推荐

  1. Spark大数据处理框架入门(单机版)

    导读 引言 环境准备 安装步骤 1.下载地址 2.开始下载 3.解压spark 4.配置环境变量 5.配置 spark-env.sh 6.启动spark服务 7.测试spark stay hungry ...

  2. 3. java基础语法

    3.1 注释(理解) 注释是对代码的解释和说明文字,可以提高程序的可读性,因此在程序中添加必要的注释文字十分重要.Java中的 注释分为三种: 单行注释.单行注释的格式是使用//,从//开始至本行结尾 ...

  3. TypeScript 中 Optional Chaining 和 Nullish Coalescing

    Optional Chaining 解决的问题是重复且无意义的判空,之所以说无意义,是对业务来说它不是必需的,但不判空,程序直接就挂了,比如: let x = foo.bar.baz();   这里的 ...

  4. CSS元素的盒类型

    一.css简介 CSS是Cascading Style Sheet的缩写,中文称层叠样式表.HTML中的元素都有着自己的属性和默认样式,CSS控制HTML内标签显示不同布局样式.控制对应html标签颜 ...

  5. RHEL高级磁盘管理—Stratis

    2. Stratis 本地存储管理工具,通过Stratis可以便捷的使用Thin Provisioning.Snapshots.Pool-based的管理和监控等高级存储功能. Stratis 基于x ...

  6. 【转载】fedora22和win10之间的文件共享互访

    fedora22和win10之间的文件共享互访 钢铁侠与孔子 关注 2016.06.04 14:10* 字数 1327 阅读 2170评论 0喜欢 1 一,相关知识了解(本文执行环境为fedora22 ...

  7. 变体 variety 计算机学科中的改变类型;输入法的 类型

    变体_百度百科 中文为改变原来的体式.或者计算机学科中的改变类型. 变体 variety 输入法的 类型

  8. Docker——Registry 通过Shell管理私有仓库镜像

    使用方法: 复制代码保存为 image_registry.sh sh image_registry.sh  -h   #查看帮助 HUB=10.0.29.104:5000 改为自己的地址 #!/bin ...

  9. CentOS 6.5新增加硬盘挂载并实现开机自动挂载

    Centos7.x请参考:https://www.cnblogs.com/himismad/p/7851548.html 在内网主机Centos 6.5新增一个50G硬盘 (搭建在CAS服务器,直接新 ...

  10. 云原生ASP.NET Core程序的可监测性和可观察性

    分布式应用程序很复杂,给开发人员调试和修复生产问题带来了一系列挑战.尽管微服务架构可帮助维持一支规模较小,可以自主工作并专注于独立业务团队,但由于其分布式性质,它带来了新的挑战.例如,在业务交易过程中 ...