React快速入门之组件

目录

  • 组件
  • JSX在标签使用`{}`嵌入JS表达式
  • 使用组件
  • 组件嵌套
  • 以🌲树的方式管理组件间的关系
  • 组件纯粹原则

组件

文件:Profile.js

export default function Profile({isPacked = true,head,stlyeTmp,src,size = 80}) {if (isPacked) {head = head + " ✔";}return (<><h1>{head}</h1><imgsrc={src}alt="Katherine Johnson"width={size}style={stlyeTmp}/></>)
}export function Gallery() {return ...
}
  • export:组件可导出
  • default:默认导出组件(一个文件中只能有一个默认导出的组件,通常为文件名!)
  • function:表明这是个组件
  • Profile:组件名必须以大写字母开头
  • {head,src,size = 80}:参数(size默认值80)
  • return返回一个JSX标签,单行时省略()

JSX在标签使用{}嵌入JS表达式

export default function Profile({isPacked,recipes}) {return (<div>{isPacked ? (<h1>{head}</h1>) : (head)}{isPacked && 'isPacked为true时才显示'}{recipes.map(recipe =><div key={recipe.id}>{recipe.name}{recipe.ings.filter((ing,i) => i > 4)}</div>)}</div>)
}
  • {isPacked ? (<h1>{head}</h1>) : (head)}:三元组运算
  • {isPacked && 'isPacked为true时才显示'}:逻辑与运算
  • 数组.map(返回一个JSX标签):遍历每个元素(参数a:a为当前元素;参数(a,b):a为当前元素,b为元素下标);每个元素必须有唯一key
  • 数组.filter:返回条件为true的元素

使用组件

文件:App.js

import Profile from './Profile.js';
import { Gallery } from './Profile.js';const baseUrl = 'https://i.imgur.com/MK3eW3Am';export default function App() {return (<section><Profile head='标题' src={baseUrl + '.jpg'} size={100}stlyeTmp={{backgroundColor: 'black',color: 'pink'}}/><Gallery /></section>);
}
  • 组件导入导出
语法导出声明导入声明
默认export default function Profile(){}import Profile from './Profile.js'; 导入Profile.js中的默认导出组件
命名export function Gallery() {}import { Gallery } from './Profile.js';导入Profile.js中的非默认的导出组件,必须使用{}
  • 使用组件并传入参数:({ backgroundColor: 'black', color: 'pink' }是一个对象,和100等价)
<Profile head='HHHH' src={baseUrl + '.jpg'} size={100}stlyeTmp={{backgroundColor: 'black',color: 'pink'}}/>

组件嵌套

  • 目标效果
<Card><Avatar />
</Card><Card><Profile />
</Card>
  • 实现方式
function Card({ children }) {return (<div className="card">{children}</div>);
}

以🌲树的方式管理组件间的关系

在这里插入图片描述

组件纯粹原则

  • 它只管自己的事。 它不应更改渲染前存在的任何对象或变量。

  • 相同的输入,相同的输出。 给定相同的输入,组件应该始终返回相同的 JSX。

  • 组件的任何输入(变量、属性、状态和上下文)应该是只读的!,不应该直接修改!应使用set状态useEffect去更改数据!(因为直接修改的代码会因渲染次数、渲染顺序导致不可预测性!)

  • React 提供了一个 “严格模式”,它在开发过程中两次调用每个组件的函数。 通过两次调用组件函数,严格模式有助于找到违反纯粹原则的组件。通过将根组件封装到 <React.StrictMode> 中实现:

root.render(<React.StrictMode><App /> //根组件</React.StrictMode>
);

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

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

相关文章

在SpringBoot中自定义指标并使用Prometheus监控报警

公众号「架构成长指南」&#xff0c;专注于生产实践、云原生、分布式系统、大数据技术分享 在10 分钟教你使用Prometheus监控Spring Boot工程中介绍了如何使用Prometheus监控Spring Boot提供的默认指标&#xff0c;这篇介绍如何自定义业务指标&#xff0c;并使用Prometheus进行…

秋招复习篇之代码规范

目录 前言 1、变量命名 2、代码空格 1&#xff09;操作符左右一定有空格&#xff0c; 2&#xff09;分隔符&#xff08;, 和;&#xff09;前一位没有空格&#xff0c;后一位保持空格&#xff0c;例如&#xff1a; 3&#xff09;大括号和函数保持同一行&#xff0c;并有一个空格…

JavaScript Class类 | 类的继承 - 类的使用 -原型与原型链

文章目录 JavaScript class类基础概念属性与方法相关概念私有字段类的name属性 返回类的名字类的访问器方法super关键字 new的过程中发生了什么extends继承 重写-重载 语法细节类声明与类表达式补充理解:let和const的作用域提升规则 类的继承原型与隐式原型链特殊原型链 原型链…

【C++核心编程(一)】

一、内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域&#xff1a; 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的。 全局区&#xff1a;存放全局变量和静态变量以及常量。 栈区&#xff1a;由编译器自动分配释放,存放函数的…

第52周,第三期技术动态

大家好&#xff0c;才是真的好。 今天周五&#xff0c;我们主要介绍与Domino相关产品新闻&#xff0c;以及互联网或其他IT行业动态等。 一、HCL Domino将重新开发和发布应用市场 为了持续吸引新客户&#xff0c;现有客户以及技术爱好者和专业人士&#xff0c;在2023年的 Col…

6种大模型的使用方式总结,使用领域数据集持续做无监督预训练可能是一个好选择

本文原文来自DataLearnerAI官方网站&#xff1a;6种大模型的使用方式总结&#xff0c;使用领域数据集持续做无监督预训练可能是一个好选择 | 数据学习者官方网站(Datalearner)https://www.datalearner.com/blog/1051703426665726 Sebastian Raschka是LightningAI的首席科学家&…

数字身份验证:跨境电商如何应对账户安全挑战?

在数字化时代&#xff0c;随着跨境电商的蓬勃发展&#xff0c;账户安全问题逐渐成为行业和消费者关注的焦点。随着网络犯罪日益猖獗&#xff0c;用户的数字身份安全面临着更加复杂的威胁。本文将深入探讨数字身份验证在跨境电商中的重要性&#xff0c;并探讨各种创新技术和策略…

前端使用高德api的AMap.Autocomplete无效,使用AMap.Autocomplete报错

今天需要一个坐标拾取器&#xff0c;需要一个输入框输入模糊地址能筛选的功能 查看官方文档&#xff0c;有一个api可以直接满足我们的需求 AMap.Autocomplete 上代码 AMapLoader.load({"key": "你的key", // 申请好的Web端开发者Key&#xff0c;首次调…

XHR与Fetch的功能异同点列表

XHR与Fetch的功能异同点列表

2012年第一届数学建模国际赛小美赛B题大规模灭绝尚未到来解题全过程文档及程序

2012年第一届数学建模国际赛小美赛 B题 大规模灭绝尚未到来 原题再现&#xff1a; 亚马逊是地球上现存最大的雨林&#xff0c;比地球上任何地方都有更多的野生动物。它位于南美洲大陆的北侧&#xff0c;共有9个国家&#xff1a;巴西、玻利维亚、厄瓜多尔、秘鲁、哥伦比亚、委…

哪种猫粮比较好?超能打的5款主食冻干测评

不知道从什么时候开始掀起一股冻干喂养风&#xff0c;各种查资料阅读文献发现冻干喂养是最适合忙碌地打工人的“生骨肉喂养”替代版&#xff0c;是最符合猫咪饮食天性的一种。很多养猫人纷纷开始冻干喂养&#xff0c;但对于主食冻干猫粮的选择就让很多猫奴犯了难在电商平台随便…

Opencascad(C++)-判断直线段与TopoDS_Shape是否相交(干涉)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1、前言2、根据两个点创建有界直线段3、判断TopoDS_Shape与直线段相交 1、前言 最近在研究Opencascad的开发&#xff0c;有个需求是判断直线与TopoDS_Shpae是否存在…