React 组件

在前面的内容中,我们了解了 React 的基础知识和入门案例。本节将深入探讨 React 中最核心的概念之一 —— 组件。组件是构建 React 应用的基础,理解组件的工作原理和使用方法,对于掌握 React 开发至关重要。

什么是组件?

在 React 中,组件是具有独立功能和 UI 的可复用代码块。可以将组件看作是构建用户界面的 “积木”,通过组合不同的组件,能够搭建出复杂的页面。

组件就像一个函数,它可以接收输入(称为 “props”),并返回 React 元素,用于描述页面应该呈现的内容。例如,一个按钮、一个表单或者一个完整的页面,都可以封装成组件。

组件的类型

React 中有两种主要的组件类型:函数组件类组件

函数组件

函数组件是用 JavaScript 函数定义的组件。它是最简单的组件形式,接收 props 作为参数,并返回 React 元素。

function Welcome(props) {return <h1>Hello, {props.name}</h1>;
}

在 React 16.8 引入 Hooks 之后,函数组件具备了与类组件相同的功能,并且写法更加简洁,因此成为了推荐的组件定义方式。

类组件

类组件是基于 ES6 类定义的组件,它需要继承 React.Component,并且必须实现 render() 方法,该方法返回 React 元素。

class Welcome extends React.Component {render() {return <h1>Hello, {this.props.name}</h1>;}
}

类组件在 Hooks 出现之前是实现复杂功能的主要方式,虽然现在函数组件更受青睐,但在一些旧项目中仍然会遇到类组件。

组件的属性(Props)

Props 是组件的输入参数,用于在组件之间传递数据。Props 是只读的,组件不能修改自身接收的 props,这保证了组件的纯函数特性。

传递 Props

父组件可以通过在子组件标签上添加属性的方式,向子组件传递 props。

function App() {return <Welcome name="Alice" age={25} />;
}

接收 Props

子组件通过参数接收父组件传递的 props。对于函数组件,props 是函数的参数;对于类组件,props 通过 this.props 访问。

// 函数组件接收props
function Welcome(props) {return (<div><h1>Hello, {props.name}</h1><p>Age: {props.age}</p></div>);
}// 类组件接收props
class Welcome extends React.Component {render() {return (<div><h1>Hello, {this.props.name}</h1><p>Age: {this.props.age}</p></div>);}
}

Props 的默认值

可以为组件的

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

容器化环境下的服务器性能瓶颈与优化策略

更多云服务器知识&#xff0c;尽在hostol.com在容器化环境中&#xff0c;性能优化并不是一个简单的“加硬件”或“增加资源”就能解决的问题。随着技术的进步&#xff0c;越来越多的公司选择使用容器技术&#xff08;如Docker、Kubernetes&#xff09;来提高应用的灵活性、可移…

GaussDB 数据库架构师修炼(八) 等待事件(2)-ASP报告分析

1 ASP报告简介ASP-Active Sesion Profile &#xff08;活跃会话档案信息&#xff09;&#xff0c;ASP每秒获取活跃会话事件&#xff0c;放到内存中&#xff0c;内存中的数据达阈值&#xff0c;会落盘gs_asp表中。ASP Report根据输入的时间段与slot个数&#xff0c;从内存和磁盘…

CentOS7 安装 Redis

在 CentOS 7 上配置 Redis 服务器需要完成安装、配置和服务管理。以下是详细步骤&#xff1a;安装 Redis安装依赖&#xff1a;yum install -y gcc tcl下载并解压 Redis&#xff1a;cd /usr/local/wget https://download.redis.io/releases/redis-6.2.6.tar.gztar -zxvf redis-6…

《C++ list 完全指南:从基础到高效使用》

《C list 完全指南&#xff1a;从基础到高效使用》 文章目录《C list 完全指南&#xff1a;从基础到高效使用》一、forward_list和list比较二、list的接口介绍1.list的构造2.list iterator的使用3.list的容量操作4.list的访问操作5.list的其他操作接口三、list的迭代器失效四、…

CIU32L051 DMA+Lwrb环形队列实现串口无阻塞性数据的收发 + 数据百分百不丢失的实现

1.Lwrb的介绍&#xff08;博主功能的实现是基于RT-thread系统实现&#xff09; Lwrb是由Tilen Majerle编写的一个线程安全的环形队列&#xff0c;通常与DMA配合实现数据的无阻塞性收发&#xff0c;同时&#xff0c;配合DMA的传输过半中断&#xff0c;传输完成中断&#xff0c;以…

【C++】C++ 的入门知识2

本篇文章主要讲解 C 的入门语法知识引用、inline 关键字与 nullptr 关键字。 目录 1 引用 1&#xff09; 引用的概念与定义 &#xff08;1&#xff09; 引用的概念 &#xff08;2&#xff09; 引用的定义 2&#xff09; 引用的特性 3&#xff09; 引用的使用场…

基于Kafka实现动态监听topic功能

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之间&…

机械学习初识--什么是机械学习--机械学习有什么重要算法

一、什么是机械学习机器学习&#xff08;Machine Learning&#xff09;是人工智能&#xff08;AI&#xff09;的一个重要分支&#xff0c;它使计算机能够通过数据自动学习规律、改进性能&#xff0c;并在没有明确编程的情况下完成特定任务。其核心思想是让机器从数据中 “学习”…

普通大学生大三这一年的想法

目录 大三期间的经历与反思 公益活动&#xff1a;社会责任感的体现 比赛&#xff1a;个人成长的助推器 培训与思想提升 大学教育的本质与人才培养 构建自我的道与未来规划 大学教育的未来与个人定位 结语 大三期间的经历与反思 大三&#xff0c;大学生活的分水岭&#…

Python——入门

目录 变量 变量类型 动态类型 注释 输出输入 运算符 算术运算符 关系运算符 逻辑运算符 赋值运算符 条件语句 循环语句 函数 函数作用域 函数嵌套调用 函数默认参数 关键字参数 列表 切片 列表遍历 新增元素 查找元素 删除元素 列表拼接 元组…

华为荣耀部分机型从鸿蒙降回EMUI的一种方法

一、准备说明 1、这里介绍使用华为手机助手、海外代理软件结合固件将部分华为荣耀手机鸿蒙系统降级回EMUI系 统的一种方式&#xff1b; 2、需要降级的手机需要再出厂时内置系统为EMUI&#xff0c;出厂时为鸿蒙系统的无法进行降级操作&#xff1b; 3、降级有风险&#xff0…

maven <dependencyManagement>标签的作用

作用 dependencyManagement标签的作用&#xff1a;在父工程pom文件中声明依赖&#xff0c;但不引入&#xff1b;在子工程中用到声明的依赖时&#xff0c;可以不加依赖的版本号&#xff0c;这样可以统一管理工程中用到的依赖版本。 示例 先创建一个项目 dependencyManagement-de…

JSON格式化与结构对比

说明 功能格式化json字符串为最简格式&#xff0c;并标识值类型&#xff1b;比对json字符串结构。第三方依赖fastjson: 用于解析json、判断json值类型&#xff1b;springframework自带的字符串判断&#xff0c;可以不依赖该方法&#xff0c;改为自行实现&#xff1b;slf4j: 用于…

编程与数学 03-002 计算机网络 03_物理层基础

编程与数学 03-002 计算机网络 03_物理层基础一、物理层的作用与任务&#xff08;一&#xff09;传输媒体的类型&#xff08;二&#xff09;信号的传输方式二、数据编码技术&#xff08;一&#xff09;数字数据的数字信号编码&#xff08;二&#xff09;模拟数据的数字信号编码…

c语言--文件操作

思维导图:1. 为什么使用文件&#xff1f; 如果没有文件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运⾏程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进…

SQL中的占位符、@Param注解和方法参数

代码中出现的多个 username 和 password 代表不同层面的变量&#xff0c;具体含义如下&#xff08;按执行顺序&#xff09;&#xff1a;### 1. Param("username") String username - 位置 &#xff1a;方法参数前的注解 - 作用 &#xff1a;- Param("username&q…

【SpringAI实战】FunctionCalling实现企业级自定义智能客服

一、前言 二、实现效果 三、代码实现 3.1 后端实现 3.2 前端实现 一、前言 Spring AI详解&#xff1a;【Spring AI详解】开启Java生态的智能应用开发新时代(附不同功能的Spring AI实战项目)-CSDN博客 二、实现效果 一个24小时在线的AI智能客服&#xff0c;可以给用户提供培…

kotlin基础【2】

变量类型var 和 val 的核心区别&#xff1a;关键字含义能否重新赋值类似概念&#xff08;Java&#xff09;varvariable&#xff08;可变变量&#xff09;可以普通变量&#xff08;无 final&#xff09;valvalue&#xff08;不可变变量&#xff09;不可以被 final 修饰的变量var…

【Spring AI】阿里云DashScope灵积模型

DashScope&#xff08;灵积模型&#xff09;是阿里云提供的大模型服务平台&#xff0c;集成了阿里自研的 通义千问&#xff08;Qwen&#xff09;系列大语言模型&#xff08;LLM&#xff09;以及多模态模型&#xff0c;为企业与开发者提供开箱即用的 AI 能力。官网地址 https://…

Rust Web框架性能对比与实战指南

Rust Actix Web Rust Web 框架的实用对比分析 以下是 Rust Web 框架的实用对比分析,涵盖主要框架(如 Actix-web、Rocket、Warp、Axum 等)的常见使用场景示例,按功能分类整理: 基础路由设置 Actix-web use actix_web::{get, App, HttpResponse, HttpServer, Responder}…