当前位置: 首页 > news >正文

React—— props校验(非typescript校验类型)

非typescript环境下,当我们在封装组件的时候,接受props时传入的内容,需要做类型检测,那我们可以用props校验进行类型的检查。

props校验允许在创建组件的时候,就约定props的格式、类型等

实现步骤:

  • 导入 prop-types

  • 使用组件名.propTypes = {} 来给组件的props添加校验规则

  • 校验规则通过 PropTypes 对象来指定

  • 如果props想设置默认值,可以通过defaultProps去设置

    1. 常见类型:array、bool、func、number、object、string
    2. React元素类型:element
    3. 必填项:isRequired
    4. 特定结构的对象:shape({})
import PropTypes from 'prop-types'
function App(props) {return (<h1>{props.colors}</h1><h1>{props.num}</h1><h1>{props.name}</h1>)
}
// 这里约定了属性时什么类型,不然类型检测不通过,会清晰报错
App.propTypes = {colors: PropTypes.array,num:PropTypes.number,name:PropTypes.string,
}// 设置默认值
App.defaultProps = {colors: ['蓝色']nun:18,name:'hyy'
}

###React—— 类的-static 校验简写上面的校验
ES6新出的class可以帮组我们进行类型校验,我们可以定义一个类,给定其类型即默认值。

  • 实例成员: 通过实例调用的属性或者方法叫做实例成员(属性或者方法)

  • 静态成员:通过类或者构造函数本身才能访问的属性或者方法

    static可以把实例成员设置未静态成员

static的作用:简写校验、简写默认值

import PropTypes from 'prop-types'
function App(props) {return (<h1>{props.colors}</h1><h1>{props.num}</h1><h1>{props.name}</h1>)// 这里约定了属性时什么类型,不然类型检测不通过,会清晰报错
static propTypes = {colors: PropTypes.array,num:PropTypes.number,name:PropTypes.string,
}// 设置默认值
static defaultProps = {colors: ['蓝色']nun:18,name:'hyy'
}
}

相关文章:

  • 目标检测——PP-YOLO算法解读
  • 33-Java服务定位器模式 (Service Locator Pattern)
  • js中的new Map的用法
  • [ESP32] 编码旋钮驱动
  • 备考ICA----Istio实验7---故障注入 Fault Injection 实验
  • 一种基于约化因子上三角矩阵求逆方法与MATLAB仿真
  • 【数据结构】栈与队列
  • transfomer知识点梳理
  • 工业相机采图方式、图像格式(BYTE、HObject和Mat)转换
  • 队列的实现(C语言链表实现队列)
  • JS+CSS3点击粒子烟花动画js特效
  • Spark与flink计算引擎工作原理
  • MySQL存储引擎的区别与选择
  • 【数据可视化】使用Python + Gephi,构建中医方剂关系网络图!
  • 微服务鉴权的几种实现方案
  • Android开源项目规范总结
  • ng6--错误信息小结(持续更新)
  • React Transition Group -- Transition 组件
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 工作中总结前端开发流程--vue项目
  • 机器学习 vs. 深度学习
  • 手写双向链表LinkedList的几个常用功能
  • C# - 为值类型重定义相等性
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 关于Android全面屏虚拟导航栏的适配总结
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #QT(串口助手-界面)
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (第一天)包装对象、作用域、创建对象
  • (多级缓存)多级缓存
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)计算机毕业设计大学生兼职系统
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)一些感悟
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET命名规范和开发约定
  • .net生成的类,跨工程调用显示注释
  • .net实现客户区延伸至至非客户区
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • []C/C++读取串口接收到的数据程序
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [codeforces]Recover the String
  • [Deep Learning] 神经网络基础
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [Foreman]解决Unable to find internal system admin account
  • [github配置] 远程访问仓库以及问题解决
  • [HTML]Web前端开发技术6(HTML5、CSS3、JavaScript )DIV与SPAN,盒模型,Overflow——喵喵画网页