React中Props的详细使用和props的校验
props中的children属性
组件标签只用有子节点的时候,props就会有该属性;
children的属性跟props一样的,值可以是任意值;(文本,React元素,组件,函数)
组件: <ClassCom> 传递的数据 </ClassCom>
这样的组件标签中就会有子节点
props中的children的简单使用
<!-- 主页面 -->
import React from 'react';
import ReactDOM from 'react-dom';
import ClassCom from "./components/ClassCom"
ReactDOM.render(<ClassCom>传递的数据</ClassCom>,document.getElementById('root'))
子组件
import React from "react";
// 函数组件
// const ClassCom = (props) => {
// return (
// <div>
// <h2>组件</h2>
// { props.children }
// </div>
// )
// }
// 类组件
class ClassCom extends React.Component{
render() {
return (
<div>
<p>-------我是子组件--------</p>
{this.props.children}
</div>
)
}
}
export default ClassCom

props中children的属性是标签
<!-- 主页面 -->
import React from 'react'; //这个是react这个包,我们是需要的
import ReactDOM from 'react-dom'; //这个是react的虚拟dom
import ClassCom from "./components/ClassCom"
ReactDOM.render(<ClassCom>
<p>我是一个p标签</p>
</ClassCom>, document.getElementById('root'))
<!-- 子组件 -->
import React from "react";
// 类组件
class ClassCom extends React.Component{
render() {
return (
<div>
<p>-------我是子组件--------</p>
{this.props.children}
</div>
)
}
}
export default ClassCom

props的校验
为什么会有props的校验。因为props是外来的。
我们无法保证使用者传递过来的参数是什么格式的。
如果我们这个props是数组,而使用者传递的是数字。
这个时候会出现意想不到的后果。
所以我们需要对props进行校验,如props的类型,格式。
校验步骤
1.需要安装一个包 yarn add prop-types 或者 npm i prop-types
2.导包 import PropTypes from 'prop-types'
3. 组件名.PropTypes = { 属性:PropTypes.类型 }
PropTypes的类型有
PropTypes.array 数组
PropTypes.bool 布尔
PropTypes.func 函数
PropTypes.number
PropTypes.object
PropTypes.string
props校验的简单使用
//组件
import React from "react";
// 导包
import PropTypes from 'prop-types'
// 类组件
class ClassCom extends React.Component{
render() {
return (
<div>
{
this.props.arr.map(item => <li key={item.id }> { item.name}</li>)
}
数字: {this.props.num }
</div>
)
}
}
ClassCom.propTypes = {
// 希望传递过来的arr是数组
arr: PropTypes.array,
num:PropTypes.number
}
export default ClassCom
当传递的数据不符合条件的时候

import React from 'react';
import ReactDOM from 'react-dom';
import ClassCom from "./components/ClassCom"
const list = [{name:'李大为',id:1},{name:'夏洁',id:2}]
ReactDOM.render(<ClassCom arr={list} num={100}></ClassCom>, document.getElementById('root'))
Props的约束规则
// num属性是必填写的
num: PropTypes.number.isRequired,
// 特定结果的对象
myObj: PropTypes.shape({
name: PropTypes.string,
age: PropTypes.number,
sex:PropTypes.bool
})
// 表示是一个React元素
tag:PropTypes.element
Props的默认值的设置
// ClassCom是组件名称
ClassCom.defaultProps = {
pageSize:10
}
使用的时候 页数: { this.props.pageSize}
Props限制的简单使用
import React from 'react';
import ReactDOM from 'react-dom';
import ClassCom from "./components/ClassCom"
const list = [{ name: '李大为', id: 1 }, { name: '夏洁', id: 2 }]
const obj = {
name: 123, //这个类型不正确
sex: '男',
age:18
}
ReactDOM.render(<ClassCom arr={list} num={100} myObj={ obj}></ClassCom>, document.getElementById('root'))
import React from "react";
// 导包
import PropTypes from 'prop-types'
// 类组件
class ClassCom extends React.Component{
render() {
return (
<div>
{
this.props.arr.map(item => <li key={item.id }> { item.name}</li>)
}
数字: {this.props.num}
页数 { this.props.pageSize}
</div>
)
}
}
ClassCom.propTypes = {
// 希望传递过来的arr是数组
arr: PropTypes.array,
// num属性是必填写的
num: PropTypes.number.isRequired,
// 特定结果的对象
myObj: PropTypes.shape({
name: PropTypes.string,
age: PropTypes.number,
sex:PropTypes.bool
}),
// 表示是一个React元素
tag: PropTypes.element
}
<!-- 这是默认值 -->
ClassCom.defaultProps = {
pageSize:10
}
export default ClassCom

React中Props的详细使用和props的校验的更多相关文章
- react中constructor和super()以及super(props)的区别。
react中这两个API出镜率超级高,但是一直不太懂这到底是干嘛的,有什么用:今天整理一下,方便自己查看同时方便大家. 1.constructor( )-----super( )的基本含义 const ...
- react中的jsx详细理解
这是官网上的一个简单的例子 const name = 'Josh Perez'; const element = <h1>Hello, {name}</h1>; ReactDO ...
- React中的Context——从父组件传递数据
简介:在React中,数据可以以流的形式自上而下的传递,每当你使用一个组件的时候,你可以看到组件的props属性会自上而下的传递.但是,在某些情况下,我们不想通过父组件的props属性一级一级的往下传 ...
- React中render Props模式
React组件复用 React组件复用的方式有两种: 1.render Props模式 2.高阶组件HOC 上面说的这两种方式并不是新的APi. 而是利用Raect自身的编码特点,演化而来的固定编码写 ...
- React中props.children和React.Children的区别
在React中,当涉及组件嵌套,在父组件中使用props.children把所有子组件显示出来.如下: function ParentComponent(props){ return ( <di ...
- React中props
今天让我们开启新的篇章好吧,来搞一搞React,以下所有操作都是我个人的一些理解,如果有错吴还请指出,想要看更全的可以去React官网可能一下子好吧 昨天按摩没到位,导致今天身体不太行,撸码千万别苦了 ...
- React中Props 和 State用法
React中Props 和 State用法 1.本质 一句话概括,props 是组件对外的接口,state 是组件对内的接口.组件内可以引用其他组件,组件之间的引用形成了一个树状结构(组件树),如果下 ...
- react中直接调用子组件的方法(非props方式)
我们都知道在 react中,若要在父组件调用子组件的方法,通常我们会采用在父组件定义一个方法,作为props转给子组件,然后执行该方法,可以获取到子组件传回的参数以得到我们的目的. 显而易见,这个执行 ...
- react 中state与props
react 中state与props 1.state与props props是只读属性,只有在组件被实例化的时候可以赋值,之后的任何时候都无法改变该值.如果试图修改该值时,控制台会报错 only re ...
- React中props与state
以下内容均为个人理解. 1.state: 在react中,state可以看成管理页面状态的集合(实则一个对象而已),库里面的成员均为页面渲染变量,整个页面为一个状态机,当state发生变化时,页面会重 ...
随机推荐
- TeamX 引擎的高并发能力测试
TeamX,是基于 SolonJT 引擎构建的一个团队协工具.主要功能有: Wiki(团队词条,用于写接口文档也行...) Planned(项目计划 和 个人日志) 比较兄弟产品,区别会很大:基于表格 ...
- EXECL函数
1 COUNTIF 对比两列数据,有相同的即计为1 找一列空白列,输入=COUNTIF(范围,条件),按回车,然后再点击表格右下角的"+" 就可以拉动持续执行这个函数 2 CONC ...
- 分享几个常用的运维 shell 脚本
今天咸鱼给大家分享几个不错的 Linux 运维脚本,这些脚本中大量使用了 Linux 的文本三剑客: 1. awk 2. grep 3. sed 建议大家这三个工具都要了解并最好能够较为熟练的使用 根 ...
- UVA 156 Ananagrams STL应用
https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&prob ...
- element-china-area-data
https://blog.csdn.net/xiejnpeng/article/details/111400199
- lighthouse性能优化分析工具使用
- uniapp H5扫码解决方案
JS通过webView调用本地相机扫码二维码,然后webView把二维码数据传给JS 网上找了一堆资料,都是JS传值给webView的,这里自己看了下代码,通过两个步骤实现此功能1,通过JS调用web ...
- poj 3268 最短路
***题意:在x这个点有个聚会,其他的点要到x这个点,然后再会自己原始的点,求一来一回最大的那个距离 做法:两边dijstra算法,因为是单向图,要注意更新顺序*** #include<iost ...
- 揭秘 Docker 网络:手动实现 Docker 桥接网络
本文将带领读者探索 Docker 桥接网络模型的内部机制,通过手动实现 veth pair.bridge.iptables 等关键技术,揭示网络背后的运作原理. 如果你对云原生技术充满好奇,想要深入了 ...
- Go-包-package-modules-import