news 2026/5/9 1:32:44

React中文网课程笔记1—快速入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
React中文网课程笔记1—快速入门

概述

本章节将介绍开发者每天都会使用的 80% 的 React 概念。本章介绍的知识如下:

  • 如何创建和嵌套组件
  • 如何添加标签和样式
  • 如何显示数据
  • 如何渲染条件和列表
  • 如何对事件做出响应并更新界面
  • 如何在组件间共享数据

如何创建和嵌套组件

React 应用程序是由组件组成的。React 组件是返回标签的 JavaScript 函数,定义时组件名必须以大写字母开头,而 HTML 标签都是小写字母。举例如下:

function MyButton() { return ( <button>我是一个按钮</button> ); } export default function MyApp() { return ( <div> <h1>欢迎来到我的应用</h1> <MyButton /> </div> ); }

说明:export default关键字指定了文件中的主要组件。export default关键字语法可以参考 MDN 和 javascript.info。

如何使用标签和样式

使用 JSX 编写标签

大多数 React 项目使用 JSX标签语法,原因是JSX很方便。所有 React中文网推荐的本地开发工具 都开箱即用地支持 JSX。

JSX 比 HTML 更加严格:

  • 标签必须闭合,如<br />
  • 组件只能返回一个 JSX 标签,因此组件中多个标签必须被包裹到一个父级标签中,如<div>...</div>或空的<>...</>。举例如下:
function AboutPage() { return ( <> <h1>关于</h1> <p>你好。<br />最近怎么样?</p> </> ); }

如果开发者有大量 HTML 需要移植到 JSX 中,开发者可以使用 在线转换器。

添加样式

React 中,开发者可以使用className为标签指定一个 CSS 的 class。它与 HTML 的 class 属性的工作方式相同:

<img className="avatar" />

然后,开发者需要在一个单独的 CSS 文件中为标签的 CSS 类型 class编写规则:

/* 在你的 CSS 文件中修改 */ .avatar { border-radius: 50%; }

注意:React 没有规定开发者如何添加 CSS 文件,最简单的方式是使用 HTML 的 <link> 标签关联CSS文件,但如果开发者使用了构建工具或框架,请阅读其文档了解如何将 CSS 文件添加到项目中。

如何将TS数据显示到JSX标签

标签中用大括号包裹 JavaScript 变量或 JavaScript 表达式,可以提取出变量/表达式内容给标签。主要有2种使用方式:

  • 标签内容中使用 JavaScript 变量。举例如下:
return ( <h1> {user.name} </h1> );
  • 标签属性中使用 JavaScript 变量。举例如下:
return ( <img className="avatar" src={user.imageUrl} /> );

如何根据不同条件渲染不同JSX标签

条件渲染

React 没有定义特殊的语法来编写条件语句,开发者需使用 JavaScript 代码编写条件,来指定JSX标签或JSX标签属性。下面以JSX标签为例说明:

if 语句举例

let content; if (isLoggedIn) { content = <AdminPanel />; } else { content = <LoginForm />; } return ( <div> {content} </div> );

条件 ? 运算符举例

条件 ? 运算符与if区别:条件运算符工作于 JSX 标签内部。

<div> {isLoggedIn ? ( <AdminPanel /> ) : ( <LoginForm /> )} </div>

逻辑 && 语法举例

逻辑 && 语法与if区别:&&运算符工作于 JSX 标签内部。

<div> {isLoggedIn && <AdminPanel />} </div>

如何渲染JSX列表标签

React中通过for 循环 和 array 的 map() 函数 渲染JSX列表标签。代码举例如下:

const products = [ { title: '卷心菜', isFruit: false, id: 1 }, { title: '大蒜', isFruit: false, id: 2 }, { title: '苹果', isFruit: true, id: 3 }, ]; export default function ShoppingList() { const listItems = products.map(product => <li key={product.id} style={{ color: product.isFruit ? 'magenta' : 'darkgreen' }} > {product.title} </li> ); return ( <ul>{listItems}</ul> ); }

JSX标签如何响应事件

import { useState } from 'react'; export default function MyApp() { return ( <div> <h1>独立更新的计数器</h1> <MyButton /> <MyButton /> </div> ); } function MyButton() { const [count, setCount] = useState(0); function handleClick() { setCount(count + 1); } return ( <button onClick={handleClick}> 点了 {count} 次 </button> ); }

说明:开发者从useState中可获得两样东西:当前的 state,以及更新它的函数setState。开发者可以起任何名字,但按照惯例命名规则为:[something, setSomething]

使用 Hook

use开头的函数称为HookuseState是 React 提供的一个内置 Hook。开发者可以在 React API 参考 中找到其他内置的 Hook。开发者也可以通过组合现有的 Hook 来编写属于你自己的 Hook。

Hook 比普通函数更为严格。开发者只能在组件(或其他 Hook)的顶层调用 Hook。如果开发者想在一个条件或循环中使用useState,请提取一个新的组件并在组件内部使用它。

如何在组件间共享数据

将组件中的状态变量定义到他们的公共父组件中,父组件通过prop 传递方式将数据和方法传递给子组件,来实现组件间共享数据。这种方案称为“状态提升”。

import { useState } from 'react'; export default function MyApp() { const [count, setCount] = useState(0); function handleClick() { setCount(count + 1); } return ( <div> <h1>共同更新的计数器</h1> <MyButton count={count} onClick={handleClick} /> <MyButton count={count} onClick={handleClick} /> </div> ); } function MyButton({ count, onClick }) { return ( <button onClick={onClick}> 点了 {count} 次 </button> ); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 8:20:39

线索二叉树是对普通二叉树的优化结构,旨在提高遍历效率

一、线索二叉树 线索二叉树是对普通二叉树的优化结构&#xff0c;旨在提高遍历效率。在传统二叉树中&#xff0c;每个结点有左右两个指针&#xff0c;对于n个结点的二叉树&#xff0c;共有2n个指针域&#xff0c;其中只有n-1个被用于连接子结点&#xff0c;其余n1个为空。线索二…

作者头像 李华
网站建设 2026/5/3 0:27:47

GPT-5.2与Claude-4.5国内直连实操指南

2025年最后一天&#xff0c;如果你还在折腾网络或者买那种随时会封号的海外代充&#xff0c;或者忍受镜像站背后偷偷换成低版本API的降智服务&#xff0c;那你这几年的技术圈真是白混了。在当前GPT-5.2和Claude-4.5满地走的环境中&#xff0c;稳定直连和白嫖额度才是硬道理。 …

作者头像 李华
网站建设 2026/5/3 9:05:07

互联网大厂Java面试实录:从Spring到微服务的全面探索

互联网大厂Java面试实录&#xff1a;从Spring到微服务的全面探索 场景描述&#xff1a; 在一家知名互联网大厂的面试室里&#xff0c;面试官严肃地坐在桌子的一边&#xff0c;他面前坐着一位初入职场的Java小白程序员&#xff0c;名叫超好吃。今天的面试主题围绕Java核心技术栈…

作者头像 李华
网站建设 2026/5/8 10:27:42

大模型如何评测之——“刻意破坏训练中的高频共现统计“模板

1、评测样本模板模板 → 示例 → 测什么 → 常见失败&#xff0c;建评测集。一、语言形式 能力解耦类模板 1&#xff1a;低语言质量 高专业度模板【非标准/口语/有错别字的表达】【本质是专业/技术/学术问题】示例“我这个最小二成回归哈&#xff0c; 就是残插不是正太分布会…

作者头像 李华
网站建设 2026/5/3 8:56:53

YOLOv8预测置信度阈值设置技巧

YOLOv8预测置信度阈值设置技巧 在智能监控系统部署过程中&#xff0c;一个常见的问题是&#xff1a;明明模型在测试集上表现优异&#xff0c;实际运行时却频繁误报或漏检。比如夜间摄像头将路灯反光识别为车辆&#xff0c;或者远处的行人因尺寸过小而被完全忽略——这些问题背后…

作者头像 李华
网站建设 2026/5/1 9:42:00

多元统计分析不会做?R语言带你玩转生态数据,快速出图出结果

第一章&#xff1a;R 语言 多元统计分析 生态数据在生态学研究中&#xff0c;多元统计分析是探索物种分布、环境因子影响以及群落结构变化的重要工具。R 语言凭借其强大的统计计算能力和丰富的生态学相关包&#xff08;如 vegan、ade4、labdsv&#xff09;&#xff0c;成为处理…

作者头像 李华