”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 学习 React.js 的综合指南

学习 React.js 的综合指南

发布于2024-08-18
浏览:165

A Comprehensive Guide to Learning React.js

React.js 由 Facebook 开发和维护,已成为用于构建用户界面(尤其是单页应用程序 (SPA))的最流行的 JavaScript 库之一。 React 以其灵活性、高效和易用性而闻名,拥有庞大的社区和丰富的资源供各个级别的开发人员使用。无论您是初学者还是希望将 React 添加到您的技能组合中的经验丰富的开发人员,本教程都将指导您了解 React.js 的基础知识。

1.什么是 React.js?

React.js 是一个开源 JavaScript 库,用于构建用户界面,特别是对于需要快速、交互式用户体验的单页应用程序。 React 允许开发人员创建大型 Web 应用程序,这些应用程序可以有效地更新和渲染以响应数据更改。它是基于组件的,这意味着 UI 被分成小的、可重用的部分,称为组件。

2.设置你的 React 环境

在开始编码之前,您需要设置开发环境。请按照下列步骤操作:

第 1 步:安装 Node.js 和 npm

  • Node.js:React 需要 Node.js 作为其构建工具。
  • npm:节点包管理器(npm)用于安装库和包。

您可以从官网下载并安装Node.js。 npm 与 Node.js 捆绑在一起。

第2步:安装Create React App

Facebook 创建了一个名为 Create React App 的工具,可以帮助您快速高效地建立新的 React 项目。在终端中运行以下命令:

npx create-react-app my-app

此命令创建一个名为 my-app 的新目录,其中包含启动 React 项目所需的所有文件和依赖项。

第3步:启动开发服务器

导航到您的项目目录并启动开发服务器:

cd my-app
npm start

您的新 React 应用程序现在应该在 http://localhost:3000 上运行。

3.了解 React 组件

React 就是组件。 React 中的组件是一个独立的模块,它呈现一些输出,通常是 HTML。组件可以定义为功能组件类组件.

功能组件

功能组件是一个返回 HTML 的简单 JavaScript 函数(使用 JSX)。

例子:

function Welcome(props) {
  return 

Hello, {props.name}

; }

类组件

类组件是定义组件的更强大的方式,并允许您管理本地状态和生命周期方法。

例子:

class Welcome extends React.Component {
  render() {
    return 

Hello, {this.props.name}

; } }

4. JSX – JavaScript XML

JSX 是 JavaScript 的语法扩展,看起来与 HTML 类似。它允许您直接在 JavaScript 中编写 HTML,然后 React 将其转换为真正的 DOM 元素。

例子:

const element = 

Hello, world!

;

JSX 使 UI 结构的编写和可视化变得更加容易。然而,在幕后,JSX 被转换为 React.createElement() 调用。

5.状态和道具

道具

Props(“属性”的缩写)用于将数据从一个组件传递到另一个组件。它们是不可变的,这意味着它们不能被接收组件修改。

例子:

function Greeting(props) {
  return 

Hello, {props.name}!

; }

状态

State 与 props 类似,但它是在组件内管理的,并且可以随着时间的推移而改变。状态通常用于组件需要跟踪的数据,例如用户输入。

例子:

class Counter extends React.Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  increment = () => {
    this.setState({ count: this.state.count   1 });
  }

  render() {
    return (
      

Count: {this.state.count}

); } }

6。处理事件

在 React 中处理事件类似于在 DOM 元素中处理事件。但是,存在一些语法差异:

  • React 事件使用驼峰式命名,而不是小写。
  • 使用 JSX,您可以传递一个函数作为事件处理程序,而不是一个字符串。

例子:

function Button() {
  function handleClick() {
    alert('Button clicked!');
  }

  return (
    
  );
}

7.生命周期方法

React 中的类组件具有特殊的生命周期方法,允许您在组件生命周期中的特定时间运行代码。其中包括:

  • componentDidMount:组件挂载后调用。
  • componentDidUpdate:组件更新后调用。
  • componentWillUnmount:在组件卸载之前调用。

例子:

class Timer extends React.Component {
  componentDidMount() {
    this.timerID = setInterval(
      () => this.tick(),
      1000
    );
  }

  componentWillUnmount() {
    clearInterval(this.timerID);
  }

  render() {
    return (
      

{this.state.date.toLocaleTimeString()}

); } }

8.条件渲染

在 React 中,您可以根据组件的状态创建不同的视图。

例子:

function Greeting(props) {
  const isLoggedIn = props.isLoggedIn;
  if (isLoggedIn) {
    return 

Welcome back!

; } return

Please sign up.

; }

9.列表和键

当你需要显示数据列表时,React 可以将每个项目渲染为一个组件。为每个项目提供一个唯一的“key”属性非常重要,以帮助 React 识别哪些项目已更改。

例子:

function NumberList(props) {
  const numbers = props.numbers;
  const listItems = numbers.map((number) =>
    
  • {number}
  • ); return (
      {listItems}
    ); }

    10.反应钩子

    React Hooks 允许您在功能组件中使用状态和其他 React 功能。一些最常用的钩子包括:

    • useState:允许您向功能组件添加状态。
    • useEffect:允许您在函数组件中执行副作用。
    • useContext:提供了一种通过组件树传递数据的方法,而无需在每个级别手动向下传递 props。

    使用状态示例:

    function Counter() {
      const [count, setCount] = useState(0);
    
      return (
        

    You clicked {count} times

    ); }

    11。构建和部署 React 应用程序

    一旦您的应用程序准备就绪,您就可以构建它以用于生产。使用以下命令:

    npm run build
    

    这将在构建文件夹中创建 React 应用程序的优化生产构建。然后您可以将其部署到任何 Web 服务器。

    结论

    React.js 是构建现代 Web 应用程序的强大工具。通过了解组件、状态管理、事件处理和挂钩,您可以创建动态和交互式用户界面。本教程涵盖了基础知识,但 React 的生态系统提供了更多内容,包括使用 Redux 进行高级状态管理、使用 React Router 进行路由以及使用 Next.js 进行服务器端渲染。

    当您继续使用 React 的旅程时,请记住利用丰富的在线资源,包括官方 React 文档、社区论坛和教程。快乐编码!

    版本声明 本文转载于:https://dev.to/markwilliams21/a-comprehensive-guide-to-learning-reactjs-5ckh?1如有侵犯,请联系[email protected]删除
    最新教程 更多>
    • 如何扩展 JavaScript 中的内置错误对象?
      如何扩展 JavaScript 中的内置错误对象?
      扩展 JavaScript 中的 Error要扩展 JavaScript 中的内置 Error 对象,您可以使用 extends 关键字定义 Error 的子类。这允许您使用附加属性或方法创建自定义错误。在 ES6 中,您可以定义自定义错误类,如下所示:class MyError extends E...
      编程 发布于2024-11-03
    • 将测试集中在域上。 PHPUnit 示例
      将测试集中在域上。 PHPUnit 示例
      介绍 很多时候,开发人员尝试测试 100%(或几乎 100%)的代码。显然,这是每个团队应该为他们的项目达到的目标,但从我的角度来看,只应该完全测试整个代码的一部分:您的域。 域基本上是代码中定义项目实际功能的部分。例如,当您将实体持久保存到数据库时,您的域不负责将其持久保存在数据...
      编程 发布于2024-11-03
    • 如何使用 SQL 搜索列中的多个值?
      如何使用 SQL 搜索列中的多个值?
      使用 SQL 在列中搜索多个值构建搜索机制时,通常需要在同一列中搜索多个值场地。例如,假设您有一个搜索字符串,例如“Sony TV with FullHD support”,并且想要使用该字符串查询数据库,将其分解为单个单词。通过利用 IN 或 LIKE 运算符,您可以实现此功能。使用 IN 运算符...
      编程 发布于2024-11-03
    • 如何安全地从 Windows 注册表读取值:分步指南
      如何安全地从 Windows 注册表读取值:分步指南
      如何安全地从 Windows 注册表读取值检测注册表项是否存在确定注册表项是否存在:LONG lRes = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Perl", 0, KEY_READ, &hKey); if (lRes...
      编程 发布于2024-11-03
    • Staat源码中的useBoundStoreWithEqualityFn有解释。
      Staat源码中的useBoundStoreWithEqualityFn有解释。
      在这篇文章中,我们将了解Zustand源码中useBoundStoreWithEqualityFn函数是如何使用的。 上述代码摘自https://github.com/pmndrs/zustand/blob/main/src/traditional.ts#L80 useBoundStoreWithE...
      编程 发布于2024-11-03
    • 如何使用 Go 安全地连接 SQL 查询中的字符串?
      如何使用 Go 安全地连接 SQL 查询中的字符串?
      在 Go 中的 SQL 查询中连接字符串虽然文本 SQL 查询提供了一种简单的数据库查询方法,但了解将字符串文字与值连接的正确方法至关重要以避免语法错误和类型不匹配。提供的查询语法:query := `SELECT column_name FROM table_name WHERE ...
      编程 发布于2024-11-03
    • 如何在 Python 中以编程方式从 Windows 剪贴板检索文本?
      如何在 Python 中以编程方式从 Windows 剪贴板检索文本?
      以编程方式访问 Windows 剪贴板以在 Python 中进行文本检索Windows 剪贴板充当数据的临时存储,从而实现跨应用程序的无缝数据共享。本文探讨如何使用 Python 从 Windows 剪贴板检索文本数据。使用 win32clipboard 模块要从 Python 访问剪贴板,我们可以...
      编程 发布于2024-11-03
    • 使用 MySQL 存储过程时如何访问 PHP 中的 OUT 参数?
      使用 MySQL 存储过程时如何访问 PHP 中的 OUT 参数?
      使用 MySQL 存储过程访问 PHP 中的 OUT 参数使用 PHP 在 MySQL 中处理存储过程时,获取由于文档有限,“OUT”参数可能是一个挑战。然而,这个过程可以通过利用 mysqli PHP API 来实现。使用 mysqli考虑一个名为“myproc”的存储过程,带有一个 IN 参数(...
      编程 发布于2024-11-03
    • 在 Kotlin 中处理 null + null:会发生什么?
      在 Kotlin 中处理 null + null:会发生什么?
      在 Kotlin 中处理 null null:会发生什么? 在 Kotlin 中进行开发时,您一定会遇到涉及 null 值的场景。 Kotlin 的 null 安全方法众所周知,但是当您尝试添加 null null 时会发生什么?让我们来探讨一下这个看似简单却发人深省的情况! ...
      编程 发布于2024-11-03
    • Python 字符串文字中“r”前缀的含义是什么?
      Python 字符串文字中“r”前缀的含义是什么?
      揭示“r”前缀在字符串文字中的作用在Python中创建字符串文字时,你可能遇到过神秘的“r” ” 前缀。此前缀具有特定的含义,可能会影响字符串的解释,尤其是在处理正则表达式时。“r”前缀表示该字符串应被视为“原始”字符串。这意味着Python将忽略字符串中的所有转义序列,从而允许您按字面意思表示字符...
      编程 发布于2024-11-03
    • 如何解决旧版 Google Chrome 的 Selenium Python 中的“无法找到 Chrome 二进制文件”错误?
      如何解决旧版 Google Chrome 的 Selenium Python 中的“无法找到 Chrome 二进制文件”错误?
      在旧版 Google Chrome 中无法使用 Selenium Python 查找 Chrome 二进制错误在旧版 Google Chrome 中使用 Python 中的 Selenium 时,您可能会遇到以下错误:WebDriverException: unknown error: cannot...
      编程 发布于2024-11-03
    • `.git-blame-ignore-revs` 忽略批量格式更改。
      `.git-blame-ignore-revs` 忽略批量格式更改。
      .git-blame-ignore-revs 是 2.23 版本中引入的一项 Git 功能,允许您忽略 git Blame 结果中的特定提交。这对于在不改变代码实际功能的情况下更改大量行的批量提交特别有用,例如格式更改、重命名或在代码库中应用编码标准。通过忽略这些非功能性更改,gitblame 可以...
      编程 发布于2024-11-03
    • 掌握函数参数:JavaScript 中的少即是多
      掌握函数参数:JavaScript 中的少即是多
      嘿,开发者们! ?今天,让我们深入探讨编写干净、可维护的 JavaScript 的一个关键方面:管理函数参数 太多参数的问题 你遇到过这样的函数吗? function createMenu(title, body, buttonText, cancellable, theme, fo...
      编程 发布于2024-11-03
    • 如何使用 FastAPI WebSockets 维护 Jinja2 模板中的实时评论列表?
      如何使用 FastAPI WebSockets 维护 Jinja2 模板中的实时评论列表?
      使用 FastAPI WebSockets 更新 Jinja2 模板中的项目列表在评论系统中,维护最新的评论列表至关重要提供无缝的用户体验。当添加新评论时,它应该反映在模板中,而不需要手动重新加载。在Jinja2中,更新评论列表通常是通过API调用来实现的。然而,这种方法可能会引入延迟并损害用户界面...
      编程 发布于2024-11-03
    • 掌握 SQL 查询:&#教师薪资格式查询&# 项目
      掌握 SQL 查询:&#教师薪资格式查询&# 项目
      您是否希望提高 SQL 技能并学习如何有效管理 MySQL 数据库? LabEx 提供的教师薪资格式查询项目就是您的最佳选择。这个综合项目将指导您完成在大学数据库中查询和格式化教职员工工资的过程,为您提供必要的知识和技能,以在数据管理工作中脱颖而出。 介绍 在这个引人入胜的项目中,您...
      编程 发布于2024-11-03

    免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

    Copyright© 2022 湘ICP备2022001581号-3