react 之 prop-types
react 之 prop-types
原文地址
在开发过程当中,经常会用到Prop的type校验,但是React.PropTypes和React.createClass这两个功能在React 15.5之后版本被废弃了,所以从15.5版本开始,须要引入prop-types包来使用props校验。
使用步骤
安装prop-types第三方包
yarn add prop-types //yarn npm install prop-types //npm
导入
import PropTypes from 'prop-types' //ES6语法
使用
组件.propTypes = {propName: PropTypes.约束 } //例 App.propTypes = {colors: PropTypes.array }
常见的约束规则
常用类型
PropTypes.array //数组PropTypes.bool //布尔PropTypes.func //函数PropTypes.object //对象PropTypes.number //数值PropTypes.string //字符串PropTypes.symbol //SymbolPropTypes.element //React元素
必填项:isRequired—在类型后面添加
App.propTypes = {colors: PropTypes.array.isRequired } //限制colors为数组类型,且必需
仅限制必要:any.isRequired
App.propTypes = {colors: PropTypes.any.isRequired } //限制colors类型随意,但必需
多可选类型:oneOfType([])
App.propTypes = {colors: PropTypes.oneOfType([PropType.string,PropType.number]) } //该方法接受一个数组参数,数组内容为允许通过的类型
多可选值:oneOf([])
App.propTypes = {colors: PropTypes.oneOf(['red', 'blue']) } //colors的值只能从red和blue中选择一个
特定的结构对象:shape({})
App.propTypes = {people: PropTypes.shape({name: PropTypes.string.isRequired,id: PropTypes.number.isRequired}) } //例如:people = {name: 'zhangsan', id: 123} 满足校验
小例
//Home.jsx import React from "react"; import PropTypes from 'prop-types';function Home(props) {return (<div><span>{props.value}</span><button onClick={props.increaseValue}>+</button></div>) }Home.propTypes = {value: PropTypes.number.isRequired,increaseValue: PropTypes.func.isRequired }export default Home
//App.jsx import React from "react"; import Home from "./Component/Home";function App() {return (<div className="App"><Home value={0} increaseValue={()=>{}}/></div>); }export default App;
ps:
一旦设置props校验,就必须按照规定,那怕如上例所写传入一个函数的壳子。
Home.propTypes = {//这里是propTypes, 首字母p不能大写,否则会出现如下错误。value: PropTypes.number.isRequired,increaseValue: PropTypes.func.isRequired }
Failed to compile.src\Component\Home\index.jsxLine 12:6: Typo in static class property declaration react/no-typosSearch for the keywords to learn more about each error.
注:本博客仅供个人学习,如有错误、侵权敬请指出。
react 之 prop-types相关推荐
- vue使用slot分发内容与react使用prop分发内容
vue 将 <slot> 元素作为承载分发内容的出口 // layout.vue <div class="container"><main>&l ...
- 如何使用Webpack 4简化React.js开发过程
by Margarita Obraztsova 玛格丽塔(Margarita Obraztsova) 如何使用Webpack 4简化React.js开发过程 (How to streamline yo ...
- 我如何使用React和Typescript在freeCodeCamp中构建天气应用
by Kelvin Mai 通过凯文麦 我如何使用React和Typescript在freeCodeCamp中构建天气应用 (How I built the weather app in freeCo ...
- 把这304道React的面试题刷完,前端面试没有在怕的!
Core React 什么是 React? React 是一个开源前端 JavaScript 库,用于构建用户界面,尤其是单页应用程序.它用于处理网页和移动应用程序的视图层.React 是由 Face ...
- React 面试题 回答
原文https://github.com/semlinker/reactjs-interview-questions 本项目的面试题来源于 sudheerj/reactjs-interview-que ...
- react 与 Vue的一些比较
原文地址 组件开发 特性对比 众所周知,Vue和React都有那么一个特性,那就是可以让我们进行组件化开发,这样可以让代码得到更好的重用以及解耦,在架构定位中这个应该叫纵向分层吧.但是,两个框架开发组 ...
- 撰写本文的所有基本React.js概念
Update: This article is now part of my book "React.js Beyond The Basics". 更新:本文现在是我的书<超 ...
- 一文详解 React 组件类型
本文的目标是让开发者清晰地了解 React 组件类型,哪些在现代 React 应用中依然在使用,以及为何一些类型现在不再使用了. 作者 | Robin Wieruch 译者 | 弯月 责编 | 屠敏 ...
- React 生命周期
生命周期方法 组件的生命周期分成三个状态: Mounting:已插入真实 DOM Updating:正在被重新渲染 Unmounting:已移出真实 DOM React 为每个状态都提供了两种处理函数 ...
- React-从0到1搭建一个React项目(一)
文章目录 架构介绍 第三方组件库 项目准备 环境准备 使用create-react-app初始化项目 创建项目目录结构 安装第三方库 利用工作之余的时间学习了react,今年一回来,部门要在公众号上面 ...
最新文章
- Arduino可穿戴教程认识ArduinoIDE
- csp2020 j2民间数据下载_华为麒麟 990 5G 下载速率领先
- CSS过渡属性transitions详细解读——Web前端系列学习笔记
- Failed to install Tomcat7 service 解决
- 随机生成元素升序向量_实验二MATLAB运算基础 -
- 一:MyBatis知识整理(1)
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
- 职称计算机和英语有效性,2015职称计算机考试突破小诀窍
- 【Linux】解决shell脚本中syntax error:unexpected end of file问题
- qqpcmgr_docpro 这个隐藏文件无法删除的问题解决方法
- mybatis中的when,then,end的用法
- arm mali 天梯图_手机CPU天梯图2018年12月最新版 秒懂十二月手机处理器排名
- windows命令行下schtasks创建定期任务
- 同为120Hz LTPO屏,OPPO Find X3高性价比更吸睛
- 面部识别预处理全家桶:mtcnn人脸捕捉、人脸点对齐、仿射运算
- [Reproduced works]MongoDB Unauthorized Access Vulnerability
- java获取图片像素点的rgb值_java获取图片每个像素点的RGB
- ios系统苹果手机进行电脑微信双开方法详细教程
- DJ logo图片 DJ logo设计
- pandas 读表格_手把手教你数据分析(1)--Pandas读取Excel信息
热门文章
- 达梦数据库逻辑备份(dexp/dimp)
- 【python进阶】古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 我发现不少培训班的就业辅导老师,简直是面试官的卧底——再论培训班学员的就业方式(java方向)
- 前端 报培训班还是自学
- 系统辨识(六):最小二乘法的修正算法
- 计算机自定义桌面,如何自定义电脑桌面的图标显示
- python 之hellow
- 从off-heap到Azul's Zing(JVM)
- 机器阅读理解论文必读论文(二): Teaching Machines to Read and Comprehend
- Blockchains Distributed L week3 爱宝授课记录(1)