」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > React 初學者指南:基礎知識入門

React 初學者指南:基礎知識入門

發佈於2024-11-07
瀏覽:773

A Beginner’s Guide to React: Getting Started with the Basics

React 已成为现代 Web 开发的基石,以其高效、灵活性和强大的生态系统而闻名。 React 由 Facebook 开发,允许开发人员创建可重用的 UI 组件,从而简化了构建交互式用户界面的过程。

无论您是想构建复杂的单页应用程序还是只是想提高您的 Web 开发技能,掌握 React 都是一笔宝贵的财富。

在本指南中,我们将引导您了解 React 入门的基本概念和步骤,包括设置开发环境、了解 React 基础知识以及创建您的第一个组件。

什么是反应?

React 是一个用于构建用户界面的 JavaScript 库,特别是对于需要动态和交互式用户体验的单页应用程序。从本质上讲,React 允许开发人员构建封装的组件来管理自己的状态并组合它们以创建复杂的 UI。 React 的声明性性质使您更容易推理应用程序,而其基于组件的架构则提高了可重用性和可维护性。

React 的简史和演变

React 于 2013 年由 Facebook 首次发布,并因其构建 UI 的创新方法而迅速受到关注。与直接操作 DOM 的传统库和框架不同,React 引入了虚拟 DOM 的概念。这种抽象允许 React 通过仅更新已更改的 UI 部分来优化渲染,从而实现更高效的性能。

自诞生以来,React 已经发生了显着的发展,引入了钩子、上下文 API 和并发渲染等功能。该库拥有一个充满活力的生态系统,围绕它构建了大量工具、库和框架,进一步增强了其功能。

React 的主要特点

  1. 基于组件的架构:React 基于组件的方法允许开发人员将复杂的 UI 分解为更小的、可重用的部分,每个部分都有自己的逻辑和渲染。

  2. 虚拟 DOM:虚拟 DOM 是真实 DOM 的内存表示。 React 使用这个虚拟 DOM 通过与之前的状态进行比较并仅应用必要的更改来有效地更新 UI。

  3. 声明性语法:React 的声明性语法通过描述任何给定状态下 UI 的外观,而不是指定如何更改 UI,使设计 UI 变得更加容易。

  4. 单向数据流:React强制执行单向数据流,这意味着数据从父组件流向子组件,从而更容易跟踪和管理状态更改。

设置开发环境

在深入研究 React 之前,您应该对 HTML、CSS 和 JavaScript 有基本的了解。熟悉这些技术将帮助您更有效地掌握 React 概念,因为 React 建立在这些基本的 Web 技术之上。

安装 Node.js 和 npm

React开发需要Node.js和npm(Node Package Manager),它们用于管理项目依赖和运行开发工具。

如何安装 Node.js 和 npm:

  1. 下载并安装Node.js:前往Node.js官方网站,下载适合您操作系统的最新LTS(长期支持)版本。该安装包包含npm。

  2. 验证安装:安装后,打开终端(或命令提示符)并运行以下命令来验证 Node.js 和 npm 是否已正确安装:

   node -v
   npm -v

您应该看到 Node.js 和 npm 的版本号,确认安装成功。

创建反应应用程序

开始使用 React 的最简单方法是使用 create-react-app 工具,该工具使用合理的默认配置设置一个新的 React 项目。

初始化新 React 项目的分步指南:

  1. 全局安装 create-react-app:打开终端并运行:
   npx create-react-app my-app

将 my-app 替换为您想要的项目名称。此命令使用给定名称创建一个新目录,并在其中设置一个 React 项目。

  1. 导航到您的项目目录
   cd my-app
  1. 启动开发服务器
   npm start

此命令运行开发服务器并在默认 Web 浏览器中打开新的 React 应用程序。您应该看到默认的 React 欢迎页面,表明一切都已正确设置。

了解 React 基础知识

组件是 React 应用程序的构建块。它们封装了 UI 元素和逻辑,使管理和重用代码变得更加容易。组件可分为两类:

  1. 功能组件:这些是返回 React 元素的 JavaScript 函数。它们通常用于简单的无状态组件。

例子:

   function Welcome(props) {
     return 

Hello, {props.name}

; }
  1. Class Components:这些是扩展 React.Component 并包含 render 方法的 ES6 类。它们用于具有本地状态和生命周期方法的更复杂的组件。

例子:

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

Hello, {this.props.name}

; } }

JSX(JavaScript XML)

JSX 是 JavaScript 的语法扩展,允许您在 JavaScript 中编写类似 HTML 的代码。它使创建 React 元素和组件变得更加容易。

JSX 如何转换为 JavaScript:

JSX 本身并不是有效的 JavaScript。在构建过程中,像 Babel 这样的工具会将 JSX 转换为常规 JavaScript。例如:

JSX:

const element = 

Hello, world!

;

转换后的 JavaScript:

const element = React.createElement('h1', null, 'Hello, world!');

道具(属性)

Props 用于将数据从父组件传递到子组件。它们是只读的,有助于使组件可重用。

将 Pros 传递给组件的示例:

function Greeting(props) {
  return 

Welcome, {props.username}!

; } function App() { return ; }

在此示例中,Greeting 组件从 App 组件接收用户名 prop 并显示它。

状态

状态允许组件管理自己的数据并对用户交互做出反应。在功能组件中,useState钩子用于管理状态。

useState Hook介绍:

useState 挂钩是一个函数,它返回一个包含两个元素的数组:当前状态值和更新它的函数。

使用useState进行状态管理的示例:

import React, { useState } from 'react';

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

  return (
    

You clicked {count} times

); }

在此示例中,计数器组件维护计数状态。单击按钮会更新状态,UI 会反映新的计数值。

构建你的第一个 React 组件

让我们创建一个简单的功能组件来显示问候消息。

分步示例:

  1. 创建一个新文件:在项目的src目录下,创建一个名为Greeting.js的文件。

  2. 定义组件:

   import React from 'react';

   function Greeting() {
     return 

Hello, React!

; } export default Greeting;
  1. 渲染组件:打开 src/App.js 并渲染 Greeting 组件。
   import React from 'react';
   import Greeting from './Greeting';

   function App() {
     return (
       
); } export default App;

添加基本​​样式

您可以使用内联样式或外部 CSS 文件设置组件的样式。添加基本​​样式的方法如下:

  1. 内联样式
   function StyledGreeting() {
     const style = {
       color: 'blue',
       textAlign: 'center'
     };

     return 

Hello, styled React!

; }
  1. 外部CSS:在src目录下创建CSS文件(Greeting.css)。
   .greeting {
     color: green;
     text-align: center;
   }

在Greeting.js中导入CSS文件并应用类:

   import React from 'react';
   import './Greeting.css';

   function Greeting() {
     return 

Hello, styled React!

; } export default Greeting;

结论

React 是一个功能强大的库,使开发人员能够高效地构建动态和交互式用户界面。在本指南中,我们介绍了 React 的基础知识,包括其核心概念、设置开发环境、了解组件、JSX、props 和状态,以及构建您的第一个组件。我们还探索了增强组件的样式选项。

版本聲明 本文轉載於:https://dev.to/emmanuelbolade/a-beginners-guide-to-react-getting-started-with-the-basics-27a4?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • `console.log`顯示修改後對象值異常的原因
    `console.log`顯示修改後對象值異常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    程式設計 發佈於2025-07-12
  • 左連接為何在右表WHERE子句過濾時像內連接?
    左連接為何在右表WHERE子句過濾時像內連接?
    左JOIN CONUNDRUM:WITCHING小時在數據庫Wizard的領域中變成內在的加入很有趣,當將c.foobar條件放置在上面的Where子句中時,據說左聯接似乎會轉換為內部連接。僅當滿足A.Foo和C.Foobar標準時,才會返回結果。 為什麼要變形?關鍵在於其中的子句。當左聯接的右側...
    程式設計 發佈於2025-07-12
  • 如何有效地轉換PHP中的時區?
    如何有效地轉換PHP中的時區?
    在PHP 利用dateTime對象和functions DateTime對象及其相應的功能別名為時區轉換提供方便的方法。例如: //定義用戶的時區 date_default_timezone_set('歐洲/倫敦'); //創建DateTime對象 $ dateTime = ne...
    程式設計 發佈於2025-07-12
  • 如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求模擬瀏覽器行為,以及偽造的用戶代理提供了一個用戶 - 代理標頭一個有效方法是提供有效的用戶式header,以提供有效的用戶 - 設置,該標題可以通過browser和Acterner Systems the equestersystermery和操作系統。通過模仿像Chro...
    程式設計 發佈於2025-07-12
  • 如何在無序集合中為元組實現通用哈希功能?
    如何在無序集合中為元組實現通用哈希功能?
    在未訂購的集合中的元素要糾正此問題,一種方法是手動為特定元組類型定義哈希函數,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    程式設計 發佈於2025-07-12
  • Java為何無法創建泛型數組?
    Java為何無法創建泛型數組?
    通用陣列創建錯誤 arrayList [2]; JAVA報告了“通用數組創建”錯誤。為什麼不允許這樣做? 答案:Create an Auxiliary Class:public static ArrayList<myObject>[] a = new ArrayList<my...
    程式設計 發佈於2025-07-12
  • 如何使用FormData()處理多個文件上傳?
    如何使用FormData()處理多個文件上傳?
    )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    程式設計 發佈於2025-07-12
  • 如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    Transform Pandas DataFrame Column to DateTime FormatScenario:Data within a Pandas DataFrame often exists in various formats, including strings.使用時間數據時...
    程式設計 發佈於2025-07-12
  • JavaScript計算兩個日期之間天數的方法
    JavaScript計算兩個日期之間天數的方法
    How to Calculate the Difference Between Dates in JavascriptAs you attempt to determine the difference between two dates in Javascript, consider this s...
    程式設計 發佈於2025-07-12
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式接口中實現垂直滾動元素的CSS高度限制問題:考慮一個佈局,其中我們具有與用戶垂直滾動一起移動的可滾動地圖div,同時與固定的固定sidebar保持一致。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 $("#map").css({ margin...
    程式設計 發佈於2025-07-12
  • 如何使用Regex在PHP中有效地提取括號內的文本
    如何使用Regex在PHP中有效地提取括號內的文本
    php:在括號內提取文本在處理括號內的文本時,找到最有效的解決方案是必不可少的。一種方法是利用PHP的字符串操作函數,如下所示: 作為替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式來搜索特...
    程式設計 發佈於2025-07-12
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中可能會遇到一個衝突,其中3派對軟件包將另一個帶有導入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    程式設計 發佈於2025-07-12
  • PHP未來:適應與創新
    PHP未來:適應與創新
    PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。 引言在編程世界中,PHP一直是網頁開發的中流砥柱。作為一個從1994年就開始發展...
    程式設計 發佈於2025-07-12
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-07-12

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3