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

news2024/12/23 19:32:30

《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.coloradmin.cn/o/929864.html

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

相关文章

牛客练习赛114

A.最后有0得数肯定是10得倍数&#xff0c;然后直接排序即可 #include<bits/stdc.h> using namespace std; const int N 1e610,mod1e97; int n; void solve(){cin>>n;vector<int> a(n);for(auto&i:a) cin>>i;sort(a.begin(),a.end(),greater<&g…

Airtest遇到模拟器无法输入中文的情况该如何处理?

1. 前言 最近有收到同学们的一些提问&#xff0c;使用Airtest的 text 接口&#xff0c;发现在部分模拟器上&#xff0c; text 无法输入中文&#xff0c;不知道该怎么处理。 今天我们就输入这个小问题&#xff0c;来详细聊一下。 2. Airtest的输入法简介 对于Android设备来说…

Spark 启动时,报JAVA_HOME is not set

文章目录 1、报错内容2、解决方式3、再次启动Spark集群 1、报错内容 Spark启动时报错&#xff1a; hadoop104: JAVA_HOME is not set2、解决方式 解决方式&#xff1a; 打开启动配置文件 cd /opt/module/spark-standalone/sbin/ vim spark-config.sh配置Java的环境变量 …

【网络】HTTPS的加密

目录 第一组&#xff0c;非对称加密第二组&#xff0c;非对称加密第三组&#xff0c;对称加密证书签名 HTTPS使用的是非对称加密加对称加密的方案 &#xff08;非对称加密&#xff1a;公钥加/解密&#xff0c;私钥解/加密&#xff09; &#xff08;对称加密&#xff1a;一组对称…

开发新能源的好处

风能无论是总装机容量还是新增装机容量&#xff0c;全球都保持着较快的发展速度&#xff0c;风能将迎来发展高峰。风电上网电价高于火电&#xff0c;期待价格理顺促进发展。生物质能有望在农业资源丰富的热带和亚热带普及&#xff0c;主要问题是降低制造成本&#xff0c;生物乙…

提速换挡 | 至真科技用技术打破业务壁垒,助力出海破局增长

各个行业都在谈出海&#xff0c;但真正成功的又有多少&#xff1f; 李宁出海十年海外业务收入占比仅有1.3%&#xff0c;走出去战略基本失败。 京东出海业务磕磕绊绊&#xff0c;九年过去国际化业务至今在财报上都不配拥有姓名。 几百万砸出去买量&#xff0c;一点水花都没有…

SpringBootWeb 登录认证

登录认证&#xff0c;那什么是认证呢&#xff1f; 所谓认证指的就是根据用户名和密码校验用户身份的这个过程&#xff0c;认证成功之后&#xff0c;我们才可以访问系统当中的信息&#xff0c;否则就拒绝访问。 在前面的案例中&#xff0c;我们已经实现了部门管理、员工管理的…

【Go 基础篇】Go 语言字符串函数详解:处理字符串进阶

大家好&#xff01;继续我们关于Go语言中字符串函数的探索。字符串是编程中常用的数据类型&#xff0c;而Go语言为我们提供了一系列实用的字符串函数&#xff0c;方便我们进行各种操作&#xff0c;如查找、截取、替换等。在上一篇博客的基础上&#xff0c;我们将继续介绍更多字…

登录认证-登录校验-会话技术

目录 会话技术 会话跟踪方案对比 方案一&#xff1a;Cookie 实现思路 具体代码 优点 缺点 方案二&#xff1a;Session 实现思路 具体代码 优点 缺点 方案三&#xff1a;令牌技术&#xff08;主流方案&#xff09; 实现思路 优点 缺点 会话技术 会话&#xff1a…

网络安全实验室搭建与实践:提供搭建虚拟实验环境的指导

随着数字化时代的来临&#xff0c;网络安全问题变得愈发严重和复杂。在这个信息交织的世界里&#xff0c;了解并掌握网络安全已经成为刻不容缓的任务。而搭建一个稳定、真实的网络安全实验环境&#xff0c;成为学习和实践的必然选择。本文将为您详细介绍网络安全实验室的搭建过…

一所南方学校,遇上AI的60天

AI大模型的想象力是什么&#xff1f; 有的人认为是参数&#xff0c;有的人可能回答是逻辑和推理&#xff0c;还有的人给出的选项是数据新式表达。 而这些答案&#xff0c;都需要在 一个个真实的产业场景里被实践&#xff0c;被验证。 对谢柏芳和东区中学而言&#xff0c;这个…

python+django+mysql旅游景点推荐系统-前后端分离(源码+文档)

系统主要采用Python开发技术和MySQL数据库开发技术以及基于OpenCV的图像识别。系统主要包括系统首页、个人中心、用户管理、景点信息管理、景点类型管理、景点门票管理、在线反馈、系统管理等功能&#xff0c;从而实现智能化的旅游景点推荐方式&#xff0c;提高旅游景点推荐的效…

4.6 TCP面向字节流

TCP 是面向字节流的协议&#xff0c;UDP 是面向报文的协议 操作系统对 TCP 和 UDP 协议的发送方的机制不同&#xff0c;也就是问题原因在发送方。 UDP面向报文协议&#xff1a; 操作系统不会对UDP协议传输的消息进行拆分&#xff0c;在组装好UDP头部后就交给网络层处理&…

clickhouse一次异常排查记录

clickhouse中报错 关闭了自启动&#xff0c;删了status&#xff0c;重启了clickhouse还是报错 1&#xff0c;排查定时执行的脚本日志&#xff08;每小时第5分钟执行&#xff09; INSERT INTO quality0529.previously_reported_urls (url) SELECT url FROM quality0529.hourly_…

基于Python的文件销毁工具设计与实现【源码+论文+演示视频+包运行成功】

博主介绍&#xff1a;✌csdn特邀作者、博客专家、java领域优质创作者、博客之星&#xff0c;擅长Java、微信小程序、Python、Android等技术&#xff0c;专注于Java、Python等技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb;…

系统架构设计高级技能 · 面向服务架构设计理论与实践

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估&#xff08;二&#xff09;【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

2023谷歌开发者大会直播大纲「初稿」

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

VS插件DevExpress CodeRush v23.1 - 支持Visual Studio ARM

DevExpress CodeRush是一个强大的Visual Studio .NET 插件&#xff0c;它利用整合技术&#xff0c;通过促进开发者和团队效率来提升开发者体验。CodeRush能帮助你以极高的效率创建和维护源代码。Consume-first 申明&#xff0c;强大的模板&#xff0c;智能的选择工具&#xff0…

2023MySQL+MyBatis知识点整理

文章目录 主键 外键 的区别&#xff1f;什么是范式&#xff1f;什么是反范式&#xff1f;什么是事务&#xff1f;MySQL事务隔离级别&#xff1f;MySQL事务默认提交模式&#xff1f;MySQL中int(1)和int(10)的区别MySQL 浮点数会丢失精度吗&#xff1f;MySQL支持哪几种时间类型&a…