章节 2:轻松入手JSX -《React.js手把手教程:从初学者到实战高手》- 第一部分:React.js基础

《React.js手把手教程:从初学者到实战高手》
第一部分:React.js基础

章节 2:轻松入手JSX

在上一章节中,我们初步认识了React.js。现在,我们将更深入地探索React.js中的JSXJavaScript XML)语法,这是一种用于构建React界面的强大工具。

什么是JSX?

JSXJavaScript XML)是一种语法扩展,它允许我们在JavaScript代码中以类似HTML的方式编写UI组件。尽管它看起来像是HTML,但实际上它是JavaScript代码的一部分,用于定义React元素的结构和外观。

JSX的基本语法

让我们从一个简单的例子开始,以帮助你更好地理解JSX

我们可以 js 代码中像下面这样创建一个JSX元素,它表示一个简单的<div>标签,标签内包含有文本内容 Hello, JSX!,并且,将这个标签赋值给了变量 element

const element = <div>Hello, JSX!</div>;

是不是和 HTML 很像?在Javascript代码里直接写HTML标签,这将为我们编写代码提供极大的便利!

在JSX中嵌入表达式

JSX不仅允许我们创建静态内容,还可以在花括号({})内嵌入JavaScript表达式,从而动态生成内容。例如,我们可以在JSX中嵌入变量、函数调用等:

示例1:

const name = "Alice";
const greeting = <p>Hello, {name}!</p>;

在这个示例中,当代码运行时,{} 内的 name 将被变量 name 的值替换,将输出以下内容:

<p>Hello, Alice</p>

示例2:

const getName = function() {return 'Alice';
};
const greeting = <p>Hello, {getName()}!</p>;

在这个示例中,当代码运行时,{} 内的 getName() 表示将会被执行 getName() 函数输出的结果所替换,最终将输出以下内容:

<p>Hello, Alice</p>

在项目中尝试一下

现在,我们在项目中尝试一下刚刚学到的JSX,并看看效果。

VS Code 中打开我们之前创建的 my-react-app 项目,如果你还没有创建这个项目,请参考 “准备工作” 这个章节创建它。

修改 src/App.js 中的代码,用以下代码替换掉之前的代码:

import React from 'react';function App() {return (<div><h1>Welcome to my React App</h1><p>This is an example of using JSX!</p></div>);
}export default App;

现在我们来对这段代码做一些说明。

你可以将 src/App.js 看作是项目的入口文件(其实,真正的入口文件是 src/index.js,因为 src/index.js 引用了 src/App.js,所以我们可以将 src/App.js 当作项目的入口文件),当项目运行时,就会首先执行这个文件中的代码。

这个文件定义了一个名为 App 的组件。一个React App项目是由层层嵌套的组件构成的。你可以将这个 App 组件当作是项目的根组件(其实它不是真正的根组件,但你可以这样认为)。

如你所见,这个组件其实是一个 function,我们称之为 function组件 或者 函数式组件。还有一种 class组件,我们在 “章节 1” 中创建的 HelloWorld组件 就是一个 class组件。由于现在 React.js 官网似乎更推崇 function组件,所以本书中我们将更多地使用 function组件

function组件return 内容就是这个组件最终渲染在页面上的内容。

再次如你所见,在我们这个示例中,App组件return 部分并不是常规的 Javascript 代码,它就是我们刚刚学习的 JSX 代码。所以,这个 App组件 最终渲染到页面上的内容是:

<div><h1>Welcome to my React App</h1><p>This is an example of using JSX!</p>
</div>

是不是很神奇?是不是很简单?

现在,运行这个项目看看效果。在命令行窗口中进入该项目的根目录,并执行以下命令(如果项目正在运行中,则不需要再次执行此命令,并且,当你修改代码后,浏览器将会自动应用最新的代码):

npm start

现在,你在浏览器中将会看到如以下的运行效果:
JSX运行效果
这是一个非常基础的示例,但它为你打开了探索更多React.jsJSX的大门。

提高可读性:JSX中的注释

在编写代码的过程中,良好的注释可以帮助他人(包括你自己)更好地理解代码的含义。在JSX中,我们也可以添加注释来提高代码的可读性。

JSX中,使用 // 来添加单行注释。例如:

return (<div><h1>Hello, World!</h1>{// 这是一个单行注释}</div>
);

JSX中,{} 内的内容是 JavaScript 表达式,注释必须写在 {} 内。

还可以用 /* ,,, */ 添加注释,这种写法可以是单行注释,也可以是多行注释。例如:

return (<div>{/* 这是单行注释 */}{/* 这是一个多行注释,可以包含多行内容。*/}<p>Welcome to my app!</p></div>
);

如果你使用 VS Code,可以使用快捷键 Ctrl + /macOS上使用 Command + /)来添加注释。选中需要注释的内容,然后按下 Ctrl + /Command + / 即可。

好了。在这个章节中我们对JSX的学习就先到这里。当然,有关JSX的知识远不只这些,但我不希望在一个章节中集中讲解太多枯燥乏味的语法。我会将这些知识分散到后面的章节中。

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

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

相关文章

GPIO输入-外电检测

前言 &#xff08;1&#xff09;本系列是基于STM32的项目笔记&#xff0c;内容涵盖了STM32各种外设的使用&#xff0c;由浅入深。 &#xff08;2&#xff09;小编使用的单片机是STM32F105RCT6&#xff0c;项目笔记基于小编的实际项目&#xff0c;但是博客中的内容适用于各种单片…

开源网安受邀参加软件供应链安全沙龙,推动企业提升安全治理能力

​8月23日下午&#xff0c;合肥软件行业软件供应链安全沙龙在中安创谷科技园举办。此次沙龙由合肥软件产业公共服务中心联合中安创谷科技园公司共同主办&#xff0c;开源网安软件供应链安全专家王晓龙、尹杰受邀参会并带来软件供应链安全方面的精彩内容分享&#xff0c;共同探讨…

uniapp 微信小程序:RecorderManager 录音DEMO

uniapp 微信小程序&#xff1a;RecorderManager 录音DEMO 简介index.vue参考资料 简介 使用 RecorderManager 实现录音。及相关的基本操作。&#xff08;获取文件信息&#xff0c;上传文件&#xff09; 此图包含Demo中用于上传测试的服务端程序upload.exe&#xff0c;下载后用…

Hadoop Yarn 核心调优参数

文章目录 测试集群环境说明Yarn 核心配置参数1. 调度器选择2. ResourceManager 调度器处理线程数量设置3. 是否启用节点功能的自动检测设置4. 是否将逻辑处理器当作物理核心处理器5. 设置物理核心到虚拟核心的转换乘数6. 设置 NodeManager 使用的内存量7. 设置 NodeManager 节点…

【微服务】04-Polly实现失败重试和限流熔断

文章目录 1. Polly实现失败重试1.1 Polly组件包1.2 Polly的能力1.3 Polly使用步骤1.4 适合失败重试的场景1.5 最佳实践 2.Polly实现熔断限流避免雪崩效应2.1 策略类型2.2 组合策略 1. Polly实现失败重试 1.1 Polly组件包 PollyPolly.Extensions.HttpMicrosoft.Extensions.Htt…

ppt转pdf免费的工具哪个好用?ppt在线转pdf的方法分享

在工作和学习中&#xff0c;将PPT文件转换为PDF格式具有重要意义。PDF文件的大小较小&#xff0c;适用于各种平台和设备&#xff0c;保持了原始文件的内容和格式&#xff0c;具有广泛的可读性和兼容性。那么小编就来为大家详细地说一说“ppt转pdf免费的工具哪个好用?ppt在线转…

HTML的label标签有什么用?

当你想要将表单元素&#xff08;如输入框、复选框、单选按钮等&#xff09;与其描述文本关联起来&#xff0c;以便提供更好的用户界面和可访问性时&#xff0c;就可以使用HTML中的<label>标签。<label>标签用于为表单元素提供标签或标识&#xff0c;使用户能够更清…

【微服务】05-网关与BFF(Backend For Frontend)

文章目录 1.打造网关1.1 简介1.2 连接模式1.3 打造网关 2.身份认证与授权2.1 身份认证方案2.1.1 JWT是什么2.1.2 启用JwtBearer身份认证2.1.3 配置身份认证2.1.4 JWT注意事项 1.打造网关 1.1 简介 BFF(Backend For Frontend)负责认证授权&#xff0c;服务聚合&#xff0c;目标…

解决抖音semi-ui的Input无法获取到onChange事件

最近在使用semi-ui框架的Input实现一个上传文件功能时遇到了坑&#xff0c;就是无法获取到onChange事件&#xff0c;通过console查看只是拿到了一个文件名。但若是把<Input>换成原生的<input>&#xff0c;就可以正常获取到事件。仔细看了下官方文档&#xff0c;发现…

Java IDEA Web 项目 1、创建

环境&#xff1a; IEDA 版本&#xff1a;2023.2 JDK&#xff1a;1.8 Tomcat&#xff1a;apache-tomcat-9.0.58 maven&#xff1a;尚未研究 自行完成 IDEA、JDK、Tomcat等安装配置。 创建项目&#xff1a; IDEA -> New Project 选择 Jakarta EE Template&#xff1a;选择…

上传WSL项目到gitlab

上传WSL项目到gitlab 设置ssh将SSH公钥添加到Gitlab 将WSL上的代码上传到gitlab确保在WSL环境中安装了git下面是上传代码到GitLab的具体步骤&#xff1a; 可能遇到的各种错误 设置ssh Gitlab添加SSH KEY 什么是SSH ? SSH 是一种网络协议&#xff0c;具备协议级别的认证及会话…

【Hello Network】DNS协议 NAT技术 代理服务器

本篇博客简介&#xff1a;介绍DNS协议 NAT技术和代理服务器 网络各协议补充 DNSDNS背景DNS介绍DNS总结域名简介 NAT技术NAT技术背景NAT IP转换过程NAPTNAT技术缺陷NAT和代理服务器 网络协议总结应用层传输层网络层数据链路层 DNS DNS是一整套从域名映射到IP的系统 DNS背景 为…

情人节特别篇:用c++弹奏音乐“海阔天空”与“孤勇者”

W...Y的主页 &#x1f495; 代码库分享 &#x1f60a; 目录 孤勇者 海阔天空 今天是2023年8月22日七夕情人节&#xff0c;但是对我来说就是再普通不过的日子。我相信有很多人期待这一天的到来&#xff0c;和自己的对象出去享受快乐时光。但是我只有一个人独孤的度过短暂的时…

vscode c++编译时报错

文章目录 1. 报错内容&#xff1a;GDB Failed with message;2. 报错内容&#xff1a;Unable to start debugging. 1. 报错内容&#xff1a;GDB Failed with message; 例如上图报错&#xff0c;一般就是编译器选择错误&#xff0c;有两种方法解决&#xff1a; 打开 tasks.json …

【随笔】如何使用阿里云的OSS保存基础的服务器环境

使用阿里云OSS创建一个存储仓库&#xff1a;bucket 在Linux上下载并安装阿里云的ossutil工具 // 命令行&#xff0c;是linux环境 3. 安装ossutil。sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash 说明:安装过程中&#xff0c;需要使用解压工具…

Django(2)-编写你的第一个 Django 应用

本教程的目的是创建一个网络投票应用程序。 它将由两部分组成&#xff1a; 一个让人们查看和投票的公共站点。 一个让你能添加、修改和删除投票的管理站点。 创建应用 $ python manage.py startapp polls每一个应用是一个python包&#xff0c;一个项目可以包含多个应用。 …

深入Golang之Mutex

深入Golang之Mutex 基本使用方法 可以限制临界区只能同时由一个线程持有。 直接在流程结构中使用 lock、unlock嵌入到结构中&#xff0c;然后通过结构体的 mutex 属性 调用 lock、unlock嵌入到结构体中&#xff0c;但是是直接在需要锁定的资源方法中使用&#xff0c;让外界无…

WPF基础入门-Class2-样式

WPF基础入门 Class2&#xff1a;样式 1、内联样式&#xff1a;优先度最高 <Grid><StackPanel><!--内联样式优先度高--><Button Background"Red" Height"10" Width"100"FontSize"20"Content"SB">…

nginx 中新增url请求参数

1、nginx中新增配置&#xff1a; set $args "$args&参数名参数值"; 示例&#xff1a; set $args "$args&demo1cn_yaojin&demo2123123&myip$remote_addr"; location / {add_header Access-Control-Allow-Origin *;add_header Access-Contro…

计算机竞赛 基于卷积神经网络的乳腺癌分类 深度学习 医学图像

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度&#xff0c;召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…