对props进行限制

简介: 对props进行限制

1.在对年龄加一的操作时,会出现一丢丢的小问题


<li>age is{age+1}</li>
const p={name:"laozhichi",age:19,address:"leizhou"}

这种类型就可以,得到20,但是不方便数据传入等等


<li>age is{age+1}</li>
const p={name:"laozhichi",age:"19",address:"leizhou"}

这种类型相当于字符串拼接,得到191


<li>age is{age+1}</li>
const p={name:"laozhichi",age:{19},address:"leizhou"}

这种类型就可以


2.对对象传入数据进行限制的时候

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="test"></div>
    <script src="./react-resource/react.development.js"></script>
    <script src="./react-resource/react-dom.development.js"></script>
    <script src="./react-resource/babel.min.js"></script>
    <script src="./react-resource/prop-types.js"></script>
    <script type="text/babel">
        class Person extends React.Component{
            render(){
                const {name,age,address}=this.props;
                return (
                    <ul>
                        <li>name is{name}</li>
                        <li>age is{age+1}</li>
                        <li>address is {address}</li>
                    </ul>
                )
            }
        }
        Person.propTypes={
            name:PropTypes.string.isRequired,
            // 在这里表示name设置为字符串类型,并且必须要填写
        }
        const p={age:19,address:"leizhou"}
        ReactDOM.render(<Person {...p}/>,document.getElementById("test"));
 </script>
</body>
</html>

如果不传入name数据,那么就会报错



3.传入函数对象的限制

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="test"></div>
    <script src="./react-resource/react.development.js"></script>
    <script src="./react-resource/react-dom.development.js"></script>
    <script src="./react-resource/babel.min.js"></script>
    <script src="./react-resource/prop-types.js"></script>
    <script type="text/babel">
        class Person extends React.Component{
            render(){
                const {name,age,address}=this.props;
                return (
                    <ul>
                        <li>name is{name}</li>
                        <li>age is{age+1}</li>
                        <li>address is {address}</li>
                    </ul>
                )
            }
        }
        Person.propTypes={
            name:PropTypes.string.isRequired,
            // 在这里表示name设置为字符串类型,并且必须要填写
            sex:PropTypes.string,
            age:PropTypes.number,
            speak:PropTypes.func,
            // 在这里表示传入函数对象,记住在这里必须要用func,不用function,否则与内置对象相互冲突
        }
        Person.defaaltProps={
            sex:"不男不女",
        }
        // 在这里设置默认值
        const p={age:19,address:"leizhou",speak:{speak}}
        // speak表示传入函数对象
        ReactDOM.render(<Person {...p}/>,document.getElementById("test"));
        function speak(){
        }
 </script>
</body>
</html>


相关文章
|
传感器 机器学习/深度学习 数据采集
【航迹关联】基于NNDA、PDA、JPDA三种算法实现航迹关联附matlab代码
【航迹关联】基于NNDA、PDA、JPDA三种算法实现航迹关联附matlab代码
|
5月前
|
监控 Go 数据处理
阿里云可观测 2025 年 3 月产品动态
阿里云可观测 2025 年 3 月产品动态
229 23
|
3月前
|
监控 JavaScript 前端开发
Vue 文件批量下载组件封装完整使用方法及优化方案解析
本文详细介绍了批量下载功能的技术实现与组件封装方案。主要包括两种实现方式:**前端打包方案(基于file-saver和jszip)** 和 **后端打包方案**。前者通过前端直接将文件打包为ZIP下载,适合小文件场景;后者由后端生成ZIP文件流返回,适用于大文件或大量文件下载。同时,提供了可复用的Vue组件`BatchDownload`,支持进度条、失败提示等功能。此外,还扩展了下载进度监控和断点续传等高级功能,并针对跨域、性能优化及用户体验改进提出了建议。可根据实际需求选择合适方案并快速集成到项目中。
330 17
|
3月前
|
Go
【LeetCode 热题100】DP 实战进阶:最长递增子序列、乘积最大子数组、分割等和子集(力扣300 / 152/ 416 )(Go语言版)
本文深入解析三道经典的动态规划问题:**最长递增子序列(LIS)**、**乘积最大子数组** 和 **分割等和子集**。 - **300. LIS** 通过 `dp[i]` 表示以第 `i` 个元素结尾的最长递增子序列长度,支持 O(n²) 动态规划与 O(n log n) 的二分优化。 - **152. 乘积最大子数组** 利用正负数特性,同时维护最大值与最小值的状态转移方程。 - **416. 分割等和子集** 转化为 0-1 背包问题,通过布尔型 DP 实现子集和判断。 总结对比了三题的状态定义与解法技巧,并延伸至相关变种问题,助你掌握动态规划的核心思想与灵活应用!
121 1
|
4月前
|
Go 索引
Go语言数组的定义与操作 - 《Go语言实战指南》
本文介绍了 Go 语言中的数组(Array)相关知识,包括定义、初始化方式(默认、显式、指定索引及自动推导长度)、访问与修改、遍历方法(for 循环和 for range)、值类型特性(复制行为)、多维数组支持以及其与切片的区别。数组是定长且同类型的集合,适合性能敏感场景,但实际开发中更常用动态的切片(slice)。
140 11
|
9月前
|
机器学习/深度学习 存储 人工智能
【AI系统】模型转换基本介绍
模型转换技术旨在解决深度学习模型在不同框架间的兼容性问题,通过格式转换和图优化,将训练框架生成的模型适配到推理框架中,实现高效部署。这一过程涉及模型格式转换、计算图优化、算子统一及输入输出支持等多个环节,确保模型能在特定硬件上快速、准确地运行。推理引擎作为核心组件,通过优化阶段和运行阶段,实现模型的加载、优化和高效执行。面对不同框架的模型文件格式和网络结构,推理引擎需具备高度的灵活性和兼容性,以支持多样化的应用场景。
396 4
【AI系统】模型转换基本介绍
|
分布式计算 算法 数据挖掘
【DSW Gallery】基于图算法实现金融风控
图算法一般被用来解决关系网状的业务场景。与常规的结构化数据不同,图算法需要把数据整理成首尾相连的关系图谱,更多的是考虑边和点的概念。这里提供了丰富的图算法组件,包括K-Core、最大联通子图、标签传播聚类等。本示例是使用人物关系图数据,和少量标记用户数据,基于图算法实现金融风控。
【DSW Gallery】基于图算法实现金融风控
|
Kubernetes Cloud Native JavaScript
【Quarkus技术系列】「云原生架构体系」配置参考指南相关的功能机制配置介绍分析
【Quarkus技术系列】「云原生架构体系」配置参考指南相关的功能机制配置介绍分析
593 0
【Quarkus技术系列】「云原生架构体系」配置参考指南相关的功能机制配置介绍分析
|
开发者
一步步教你如何上传头像
一步步教你如何上传头像
597 0
一步步教你如何上传头像
|
JSON 数据格式
解决报错信息之:SyntaxError: Unexpected token R in JSON at position 0
解决报错信息之:SyntaxError: Unexpected token R in JSON at position 0
646 0