」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 學習 React.js 的綜合指南

學習 React.js 的綜合指南

發佈於2024-08-18
瀏覽:875

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]刪除
    最新教學 更多>
    • 模擬 Python 類別
      模擬 Python 類別
      最近,我必須使用 Pytest 為 Python 模組編寫單元測試。此模組包含一個類,其他類在其建構函數中初始化。 像往常一樣,我為此類創建了一個固定裝置,以便輕鬆為每個類別方法編寫測試。此時,當我嘗試模擬建構函數中啟動的不同類別時,我遇到了一些問題。模擬不起作用,這些類別的實例仍在建立中。 經...
      程式設計 發佈於2024-11-03
    • 如何在單一 MySQL 查詢中取得多筆記錄及其相關資料?
      如何在單一 MySQL 查詢中取得多筆記錄及其相關資料?
      在一個回應中傳回多個回應資料在您的PHP 程式碼中,您有一個從資料庫表中取得多行資料的查詢。但是,您收到多個回應,並且希望將它們合併為具有多個記錄的單一回應。 要實現此目的,您需要修改查詢以對必要的表執行左聯接。您將獲取主題數據並使用左連接包含相關學生信息,而不是獲取學生數據。這將允許您在單一回應中...
      程式設計 發佈於2024-11-03
    • D - 依賴倒置原理(DIP)
      D - 依賴倒置原理(DIP)
      Before understanding DIP (Dependency Inversion Principle), it's important to know what High-Level and Low-Level modules and abstractions are. ...
      程式設計 發佈於2024-11-03
    • 為什麼 JavaScript RegEx 無法驗證輸入?
      為什麼 JavaScript RegEx 無法驗證輸入?
      Javascript 中的RegEx 功能的鬥爭:“Regex 不工作”的案例研究在標題中引用的查詢的上下文中,“Javascript RegEx 不工作” ,」使用者遇到了一個問題,即無論輸入值如何,正則表達式(regEx) 始終返回false。查詢中提供的程式碼片段如下:function che...
      程式設計 發佈於2024-11-03
    • 如何對 Ajax 請求進行排序以實現最佳控制?
      如何對 Ajax 請求進行排序以實現最佳控制?
      對Ajax 請求進行排序迭代集合並對每個元素進行單獨的Ajax 呼叫時,必須控制順序以防止伺服器過載和瀏覽器凍結。雖然可以使用自訂迭代器,但還有更優雅的解決方案可用。 jQuery 1.5 在jQuery 1.5 及更高版本中,$.ajaxQueue() 插件利用$ .Deferred、$.queu...
      程式設計 發佈於2024-11-03
    • 如何為 DOM 元素產生精確的 CSS 路徑?
      如何為 DOM 元素產生精確的 CSS 路徑?
      以增強的精度從 DOM 元素檢索 CSS 路徑提供的函數嘗試為給定 DOM 元素生成 CSS 路徑。然而,它的輸出缺乏特異性,無法捕捉元素在其兄弟元素中的位置。為了解決這個問題,我們需要一個更複雜的方法。 改進的 CSS 路徑函數下面介紹的增強函數解決了原來的限制:var cssPath = fun...
      程式設計 發佈於2024-11-03
    • 如何將單一 Python 字典寫入具有精確標題和值行的 CSV 檔案?
      如何將單一 Python 字典寫入具有精確標題和值行的 CSV 檔案?
      探索將Python 字典寫入CSV 文件的細微差別您對將Python 字典無縫寫入CSV 文件的追求給您帶來了意想不到的挑戰。雖然您設想在作為標題的字典鍵和作為第二行的值之間進行清晰的劃分,但您目前的方法似乎還不夠。讓我們深入細節,解鎖解決方案。 問題在於方法的選擇。 DictWriter.writ...
      程式設計 發佈於2024-11-03
    • 如何處理 Go 中延遲函數的錯誤回傳值?
      如何處理 Go 中延遲函數的錯誤回傳值?
      處理Go 中返回值錯誤的延遲函數當返回變數的函數在沒有延遲的情況下被延遲時,gometalinter 和errcheck 正確地發出警告檢查其回傳的錯誤。這可能會導致未處理的錯誤和潛在的運行時問題。 處理這種情況的習慣用法不是推遲函數本身,而是將其包裝在另一個檢查返回值的函數中。這是一個例子:def...
      程式設計 發佈於2024-11-03
    • 為什麼程式設計師不能總是記住程式碼:背後的科學
      為什麼程式設計師不能總是記住程式碼:背後的科學
      如果您曾經想知道為什麼程式設計師很難回憶起他們編寫的確切程式碼,那麼您並不孤單。儘管花了數小時編碼,許多開發人員經常忘記細節。這並不是因為缺乏知識或經驗,而是因為工作本身的本質。讓我們來探究一下這種現象背後的原因。 程式設計的本質 透過記憶解決問題 這比僅僅記憶語法...
      程式設計 發佈於2024-11-03
    • 你並不孤單:在社群的支持下掌握 Python
      你並不孤單:在社群的支持下掌握 Python
      加入 Python 社群可取得:社群論壇:向經驗豐富的開發者取得支援和建議(如 Stack Overflow)。 Discord 伺服器:即時聊天室,提供即時支援與指導(如 Python Discord)。線上課程與研討會:來自專家的指導,涵蓋各種主題(如 Udemy 上的 Python NumPy...
      程式設計 發佈於2024-11-03
    • 學習夥伴
      學習夥伴
      聊天機器人介面,允許使用者輸入訊息並接收來自 GPT-3.5 語言模型的對話回應。 特徵 用於處理 HTTP 請求的基於 Flask 的 Web 伺服器。 呈現用作使用者介面的基本 HTML 模板 (chat.html)。 透過 POST 請求接受使用者輸入並將其傳送到 OpenAI 的 GP...
      程式設計 發佈於2024-11-03
    • 前端開發 + 資料結構與演算法:DSA 如何為您的 React 應用程式提供動力 ⚡
      前端開發 + 資料結構與演算法:DSA 如何為您的 React 應用程式提供動力 ⚡
      专注于前端的面试通常根本不关心 DSA。 对于我们这些记得在学校/大学学习过 DSA 的人来说,所有的例子都感觉纯粹是算法(有充分的理由),但几乎没有任何例子或指导来说明我们每天使用的产品如何利用这个概念。 “我需要这个吗?” 你已经问过很多次这个问题了,不是吗? ? 以下是您今天可以在 React...
      程式設計 發佈於2024-11-03
    • 為什麼表格行上的框陰影在不同瀏覽器中表現不同?
      為什麼表格行上的框陰影在不同瀏覽器中表現不同?
      跨瀏覽器表行上的框陰影外觀不一致應用於表行() 的CSS 框陰影可能表現出不一致的行為跨各種瀏覽器。儘管 CSS 相同,但某些瀏覽器可能會如預期顯示陰影,而其他瀏覽器則可能不會。 要解決此問題,建議將 Transform 屬性與 box-shadow 屬性結合使用。將scale(1,1)加入tran...
      程式設計 發佈於2024-11-03
    • 探索 PHP 中的並發性和並行性:實作教學和技巧
      探索 PHP 中的並發性和並行性:實作教學和技巧
      理解並發性和平行性對於編寫高效的 PHP 應用程式至關重要,特別是在處理需要同時處理的多個任務或操作時。這是理解和實作 PHP 並發性和平行性的逐步指南,包含實作範例和說明。 1.併發與並行 並發:指系統透過交錯執行同時處理多個任務的能力。這並不一定意味著任務是同時執行的,只是對它...
      程式設計 發佈於2024-11-03
    • ReactJs 與 Angular
      ReactJs 與 Angular
      React 和 Angular 是用于构建 Web 应用程序的两个最流行的框架/库,但它们在关键方面有所不同。以下是 React 和 Angular 之间主要区别的细分: 1. 类型:库与框架 React:一个用于构建用户界面的库,主要关注视图层。它允许开发人员将其与其他库集成以处理...
      程式設計 發佈於2024-11-03

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

    Copyright© 2022 湘ICP备2022001581号-3