react学习——09react中props属性

news2024/11/24 19:04:52

1、基本使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!--    移动端适配-->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>1_props基本使用.html</title>
</head>
<body>
<!--准备一个容器-->
<div id="root"></div>
<div id="root2"></div>
<!--引入react核心库-->
<script type="text/javascript" src="../js/react.development.js"></script>
<!--引入react-dom.js库,用于支持react操作DOM-->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!--引入babel,用于jsx的转换jsx-->
<script type="text/javascript" src="../js/babel.min.js"></script>
<script type="text/babel">/*此处一定要写babel*/
    class Person extends React.Component{
        render(){
            const {name,age,sex}=this.props;
            return(
                    <ul >
                        <li>姓名:{name}</li>
                        <li>性别:{sex}</li>
                        <li>年龄:{age}</li>
                    </ul>
            )
        }
    }
    const p ={name:"jack",age:20,sex:"男"}
    ReactDOM.render(<Person name="tom" age="18" sex="女"/>,document.getElementById('root'))
    ReactDOM.render(<Person {...p}/>,document.getElementById('root2'))
</script>
</body>
</html>

2、props对属性进行限制

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!--    移动端适配-->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2_props进行限制.html</title>
</head>
<body>
<!--准备一个容器-->
<div id="root"></div>
<div id="root2"></div>
<div id="root3"></div>
<!--引入react核心库-->
<script type="text/javascript" src="../js/react.development.js"></script>
<!--引入react-dom.js库,用于支持react操作DOM-->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!--引入babel,用于jsx的转换jsx-->
<script type="text/javascript" src="../js/babel.min.js"></script>
<!--引入prop-types.js库,用于对组件的props进行类型限制-->
<script type="text/javascript" src="../js/prop-types.js"></script>
<!--用于对组件标签属性限制-->
<script type="text/babel">/*此处一定要写babel*/
    class Person extends React.Component{
        render(){
            const {name,age,sex}=this.props;
            return(
                    <ul >
                        <li>姓名:{name}</li>
                        <li>性别:{sex}</li>
                        <li>年龄:{age+1}</li>
                    </ul>
            )
        }
    }
    //对标签属性进行类型限制、必要性的限制
    Person.propTypes={
        name:PropTypes.string.isRequired,//限制name必传,且为字符串
        sex:PropTypes.string,//限制sex为字符串
        age:PropTypes.number,//限制age为数值
        speak:PropTypes.func,//限制speak为函数

    }
    //指定默认标签属性
    Person.defaultProps={
        sex:'男',//sex默认值为男
        age:18,//age默认值为18
    }
    const p ={name:"jack",age:20,sex:"男"}
    ReactDOM.render(<Person name="tom" age={18} sex="女" speak={speak}/>,document.getElementById('root'))
    ReactDOM.render(<Person {...p}/>,document.getElementById('root2'))
    ReactDOM.render(<Person name="cj"/>,document.getElementById("root3"))
    function speak(){
        console.log("我说话了")
    }
</script>
</body>
</html>

3、简写方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!--    移动端适配-->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3_props简写.html</title>
</head>
<body>
<!--准备一个容器-->
<div id="root"></div>
<div id="root2"></div>
<div id="root3"></div>
<!--引入react核心库-->
<script type="text/javascript" src="../js/react.development.js"></script>
<!--引入react-dom.js库,用于支持react操作DOM-->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!--引入babel,用于jsx的转换jsx-->
<script type="text/javascript" src="../js/babel.min.js"></script>
<!--引入prop-types.js库,用于对组件的props进行类型限制-->
<script type="text/javascript" src="../js/prop-types.js"></script>
<!--用于对组件标签属性限制-->
<script type="text/babel">/*此处一定要写babel*/
    class Person extends React.Component{
        //对标签属性进行类型限制、必要性的限制
        static propTypes={
            name:PropTypes.string.isRequired,//限制name必传,且为字符串
            sex:PropTypes.string,//限制sex为字符串
            age:PropTypes.number,//限制age为数值
            speak:PropTypes.func,//限制speak为函数
        }
        //指定默认标签属性
        static defaultProps={
            sex:'男',//sex默认值为男
            age:18,//age默认值为18
        }
        render(){
            const {name,age,sex}=this.props;
            return(
                    <ul >
                        <li>姓名:{name}</li>
                        <li>性别:{sex}</li>
                        <li>年龄:{age+1}</li>
                    </ul>
            )
        }
    }
    const p ={name:"jack",age:20,sex:"男"}
    ReactDOM.render(<Person name="tom" age={18} sex="女" speak={speak}/>,document.getElementById('root'))
    ReactDOM.render(<Person {...p}/>,document.getElementById('root2'))
    ReactDOM.render(<Person name="cj"/>,document.getElementById("root3"))
    function speak(){
        console.log("我说话了")
    }
</script>
</body>
</html>

4、函数式组件使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!--    移动端适配-->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>4_props与构造器.html</title>
</head>
<body>
<!--准备一个容器-->
<div id="root"></div>
<div id="root2"></div>
<div id="root3"></div>
<!--引入react核心库-->
<script type="text/javascript" src="../js/react.development.js"></script>
<!--引入react-dom.js库,用于支持react操作DOM-->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!--引入babel,用于jsx的转换jsx-->
<script type="text/javascript" src="../js/babel.min.js"></script>
<!--引入prop-types.js库,用于对组件的props进行类型限制-->
<script type="text/javascript" src="../js/prop-types.js"></script>
<!--用于对组件标签属性限制-->
<script type="text/babel">/*此处一定要写babel*/
    class Person extends React.Component{
        constructor(props) {
            //构造器是否接收props,是否传递给super,取决于:是否希望在构造器中通过this方法props
            super(props);
            console.log("constructor",this.props)
        }

        //对标签属性进行类型限制、必要性的限制
        static propTypes={
            name:PropTypes.string.isRequired,//限制name必传,且为字符串
            sex:PropTypes.string,//限制sex为字符串
            age:PropTypes.number,//限制age为数值
            speak:PropTypes.func,//限制speak为函数
        }
        //指定默认标签属性
        static defaultProps={
            sex:'男',//sex默认值为男
            age:18,//age默认值为18
        }
        render(){
            const {name,age,sex}=this.props;
            return(
                    <ul >
                        <li>姓名:{name}</li>
                        <li>性别:{sex}</li>
                        <li>年龄:{age+1}</li>
                    </ul>
            )
        }
    }
    ReactDOM.render(<Person name="tom" age={18} sex="女" speak={speak}/>,document.getElementById('root'))
    function speak(){
        console.log("我说话了")
    }
</script>
</body>
</html>

效果
在这里插入图片描述

理解

1、每个组件对象都会有 props(properties 的简写)属性
2、组件标签的所有属性都保存在 props 中

作用

1、通过标签属性从组件外向组件内传递变化的数据
2、注意: 组件内部不要修改 props 数

编码操作

1、内部读取某个值

this.props.propertyName

2、对 props 中的属性值进行类型限制和必要性限制

Person.propTypes = {
	name: React.PropTypes.string.isRequired, age: React.PropTypes.number.isRequired
}

3、扩展属性: 将对象的所有属性通过 props 传

<Person {...person}/>

4、默认属性值

Person.defaultProps = {
	name: 'Mary' 
	}

5、组件类的构造函数

constructor (props) {
	super(props)
	console.log(props) // 查看所有属性
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1846209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端vue3】TypeScrip-基础类型和任意类型

安装TypeScript npm install typescript -g 运行tsc -v可查看当前版本 为了方便调试可以安装 先安装小满zs大神写的工具&#xff0c;可以切换下载源 npm i xmzs -g 安装成功后 使用mmp ls查看当前的源有哪些 使用 mmp use选择镜像源 切换成功后&#xff0c;安装TypeScrip…

【51单片机】按键的操作

文章目录 前言读取按键的原理proteus仿真示例代码 总结 前言 在现代电子产品中&#xff0c;按键是用户与设备之间交互的重要组成部分。它们允许用户通过简单的按下来触发特定的操作或命令。在微控制器的背景下&#xff0c;按键的设计和操作对于确保设备的响应性和用户体验至关…

「ClickHouse 极简教程」分布式下的 IN/JOIN 及 GLOBAL关键字

百度安全验证https://baijiahao.baidu.com/s?id1712073808973941124&wfrspider&forpc

NSSCTF-Web题目12

目录 [SWPUCTF 2021 新生赛]finalrce 1、题目 2、知识点 3、思路 [UUCTF 2022 新生赛]ez_rce 1、题目 2、知识点 3、思路 [羊城杯 2020]easycon 1、题目 2、知识点 3、思路 [SWPUCTF 2021 新生赛]finalrce 1、题目 2、知识点 命令执行&#xff0c;tee命令 3、思路…

springboot家乡特色推荐系统 LW +PPT+源码+讲解

3系统需求分析 3.1系统功能 通过前面的功能分析可以将家乡特色推荐系统的功能分为管理员和用户两个部分&#xff0c;系统的主要功能包括首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;文章分类管理&#xff0c;文章分享管理&#xff0c;系统管理等内容。任何用户…

五谷杂粮店铺小程序的作用是有什么

大米、面粉、荞麦、豆类等多种五谷杂粮商品可以说是必需&#xff0c;线下门店或摊位数量也不乏&#xff0c;但相比较流量较为固定且销售模式单一&#xff0c;想要进一步扩大生意效果却是不易。 线上是商家重点增长的场景&#xff0c;五谷杂粮商品自然也适合开展零售批发生意&a…

Leetcode - 周赛402

目录 一&#xff0c;3185. 构成整天的下标对数目 II 二&#xff0c;3186. 施咒的最大总伤害 三&#xff0c;3187. 数组中的峰值 一&#xff0c;3185. 构成整天的下标对数目 II 这里的T1&#xff0c;T2是一个题&#xff0c;这里直接一起讲了&#xff0c; 当我们已知 x%24 的值…

NGINX_十八 nginx 访问控制

十八 nginx 访问控制 1 nginx 访问控制模块 &#xff08;1&#xff09;基于IP的访问控制&#xff1a;http_access_module &#xff08;2&#xff09;基于用户的信任登录&#xff1a;http_auth_basic_module 2 基于IP的访问控制 2.1 配置语法 Syntax&#xff1a;allow addr…

实现一个动态规划算法,解决背包问题

public class Test_31 {// 动态规划解决0-1背包问题public int knapsack(int capacity, int[] weights, int[] values, int n) {// 创建一个二维数组dp&#xff0c;用于记录状态转移过程int[][] dp new int[n 1][capacity 1];// 遍历物品for (int i 1; i < n; i) {// 遍…

73. UE5 RPG 优化投射物以及敌人生成

解决发射物会与地面产生交互的问题 之前一直遇到发射物的体积过大会在发射时&#xff0c;和地面产生交互&#xff0c;我们可以调整小一些&#xff0c;然后为了防止它和自身产生交互事件。我们可以实现它在生成后&#xff0c;不会触发相关事件&#xff0c;而是在一定时间后。 对…

编码RNA Terc-53和透明质酸受体Hmmr可调节小鼠的衰老

近期&#xff0c;厦门大学王耿教授团队在Protein & Cell&#xff08;IF21.1&#xff09;上发表题为“Noncoding RNA Terc-53 and hyaluronan receptor Hmmr regulate ageing in mice.”的研究。研究团队构建了一系列Terc-53小鼠模型&#xff0c;发现Terc-53小鼠表现出与年龄…

如何开发一个项目脚手架cli

目录 背景正文unbuildpromptsprogresskolorist 设置打包命令npm execnpxnpm init/ npm create/ npm innit 使用最后 背景 随着团队项目类型越来越多&#xff0c;方便后续快速去开发项目&#xff0c;会出现各种类型的项目模版项目。 这样开发只需要通过脚手架选择自己需要的项目…

钒能新材料综合回收利用,钒溶液净化富集工艺之离子交换法

钒电池储能产业作为典型的绿色低碳优势产业&#xff0c;是新型储能领域重要发展方向。钒电池储能具备大规模、长周期等优势&#xff0c;是储能领域的重要组成部分&#xff0c;将成为拓展电能利用、应对可再生能源随机波动、支撑可再生能源高占比电力系统的最佳技术途径之一。 …

java连接mysql报错

1.背景&#xff0c;直接升级操作系统从centos-》国产化操作系统&#xff0c;mysql也升级到5.7.44 2&#xff0c;报错 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconn…

【JavaEE进阶】Spring统一功能处理:拦截器的使用

目录 1.什么是拦截器? 2.拦截器的使用 2.1定义拦截器 2.2 注册配置拦截器 3.拦截器详解 3.1 拦截路径 3.2 拦截器的执行流程 4. 使用拦截器实现登录校验 4.1 定义拦截器 4.2 注册配置拦截器 1.什么是拦截器? 拦截器是Spring框架提供的核心功能之⼀, 主要用来拦截用…

数据采集之二主一从,485总线共享器

产品概述 485总线共享器示意图 功能示意图 DAQ-GP-485HUB是上海数采物联网推出的一款 RS485总线多路复用共享数据处理器&#xff0c;是一款高性能的通讯设备&#xff0c;专门针对两台主机和 一台从机通讯时导致的数据冲突而设计。在实际工业控制和监控场景中&#xff0c;多个主…

vlan技术--交换机实现局域网分割(Access模式trunk模式)

自作笔记... 目录 vlan技术--交换机连接pc实现局域网分割(Access模式) PC SW1 结果 vlan技术--交换机连接pc实现局域网分割(trunk模式) vlan技术--交换机连接pc实现局域网分割(Access模式) 交换机先创建vlan. 交换机分别进入接口 (配置好连接模式, 连接的vlan) PC SW1 …

华为设备telnet 远程访问配置实验简述

一、实验需求: 1、AR1模拟电脑telnet 访问AR2路由器。 二、实验步骤&#xff1a; 1、AR1和AR2接口配置IP&#xff0c;实现链路通信。 2、AR2配置AAA模式 配置用户及密码 配置用户访问级别 配置用户telnet 访问服务 AR2配置远程服务数量 配置用户远程访问模式为AAA 配置允许登录…

Boom 3D软件安装包下载-Boom 3D官网最新版下载

众多使用者向我们证明了Boom3D软件31段均衡器和预设&#xff1a;均衡器允许您仅通过手指滑动来调制音频&#xff0c;并将其另存为自定义预设&#xff0c;预设已经精心设计为不同类型的歌曲&#xff0c;因此您能够简单地拨入音频以适应您的心情。相信大家都认同Boom 3D 是一款出…

【云原生】Kubernetes网络知识

Kubernetes网络管理 文章目录 Kubernetes网络管理一、案例概述二、案例前置知识点2.1、Kubernetes网络模型2.2、Docker网络基础2.3、Kubernetes网络通信2.3.1、Pod内容器与内容之间的通信2.3.2、Pod与Pod之间的通信 2.4、Flannel网络插件2.5、Calico网络插件2.5.1、Calico网络模…