React.js 全面解析:從基礎到實戰案例

引言:

React.js,由Facebook推出并維護的開源JavaScript庫,以其組件化思想、虛擬DOM技術和聲明式編程風格,成為構建用戶界面的首選工具之一。本文將系統性地介紹React的基礎概念、核心特性,并通過實際案例展示基礎屬性的應用,幫助開發者快速上手React開發。

一、React基礎

1.?組件(Components)

React應用的核心是組件,每個組件代表頁面上的一個獨立部分,負責渲染UI和處理自己的狀態。

2.?JSX

React采用JSX語法,一種JavaScript和HTML的混合體,使得編寫HTML結構變得直觀且高效。

3.?狀態(State)與屬性(Props)

  • State:組件內部可變的數據,用于存儲組件的狀態信息。
  • Props:父組件向子組件傳遞數據的方式,是只讀的。

4.?生命周期方法

React組件從創建到銷毀會經歷多個階段,每個階段對應不同的生命周期方法,如componentDidMountrendercomponentDidUpdate等。

5.?事件處理

React使用合成事件系統,事件處理函數作為props傳遞給組件,并需以特定方式命名(如onClick)。

二、基礎屬性與用法

1.?State示例

 

Jsx

1class Counter extends React.Component {
2  constructor(props) {
3    super(props);
4    this.state = { count: 0 };
5  }
6
7  incrementCount = () => {
8    this.setState(prevState => ({ count: prevState.count + 1 }));
9  };
10
11  render() {
12    return (
13      <div>
14        <p>Count: {this.state.count}</p>
15        <button onClick={this.incrementCount}>Increment</button>
16      </div>
17    );
18  }
19}

2.?Props示例

 

Jsx

1function Welcome(props) {
2  return <h1>Hello, {props.name}</h1>;
3}
4
5ReactDOM.render(<Welcome name="Sara" />, document.getElementById('root'));

3.?條件渲染

 

Jsx

1function Greeting(props) {
2  const isLoggedIn = props.isLoggedIn;
3  return (
4    <div>
5      {isLoggedIn ? <p>Welcome back!</p> : <p>Please log in.</p>}
6    </div>
7  );
8}

4.?列表渲染

 

Jsx

1const numbers = [1, 2, 3, 4, 5];
2const listItems = numbers.map((number) =>
3  <li key={number.toString()}>{number}</li>
4);
5
6ReactDOM.render(
7  <ul>{listItems}</ul>,
8  document.getElementById('numbersList')
9);

5.?事件處理

 

Jsx

1class Toggle extends React.Component {
2  constructor(props) {
3    super(props);
4    this.state = { isToggleOn: true };
5
6    // 綁定this
7    this.handleClick = this.handleClick.bind(this);
8  }
9
10  handleClick() {
11    this.setState(state => ({
12      isToggleOn: !state.isToggleOn
13    }));
14  }
15
16  render() {
17    return (
18      <button onClick={this.handleClick}>
19        {this.state.isToggleOn ? 'ON' : 'OFF'}
20      </button>
21    );
22  }
23}

三、React Hooks

自React 16.8引入的Hooks,允許在函數組件中使用state和其他React特性,無需編寫類。

1.?useState

 

Jsx

1import React, { useState } from 'react';
2
3function Example() {
4  const [count, setCount] = useState(0);
5
6  return (
7    <div>
8      <p>You clicked {count} times</p>
9      <button onClick={() => setCount(count + 1)}>
10        Click me
11      </button>
12    </div>
13  );
14}

2.?useEffect

用于執行副作用操作(如數據獲取、訂閱或者手動修改DOM),并支持清理操作。

 

Jsx

1import React, { useState, useEffect } from 'react';
2
3function Example() {
4  const [count, setCount] = useState(0);
5
6  useEffect(() => {
7    document.title = `You clicked ${count} times`;
8  });
9
10  return (
11    <div>
12      <p>You clicked {count} times</p>
13      <button onClick={() => setCount(count + 1)}>
14        Click me
15      </button>
16    </div>
17  );
18}

四、總結

React通過組件化和JSX簡化了UI的開發復雜度,其強大的狀態管理和生命周期機制為開發者提供了高度靈活的控制能力。通過學習和掌握上述基礎知識,開發者能夠構建功能豐富、高效且可維護的Web應用。隨著React生態的不斷壯大,如Redux進行狀態管理,React Router進行路由控制,以及Next.js等服務端渲染技術的集成,React已成為現代前端開發不可或缺的一部分。

感謝你的點贊!關注!收藏!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36958.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36958.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36958.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DataWhale-吃瓜教程學習筆記(四)

學習視頻&#xff1a;第3章-二分類線性判別分析_嗶哩嗶哩_bilibili 西瓜書對應章節&#xff1a; 3.4 文章目錄 - 算法原理- 損失函數推導-- 異類樣本中心盡可能遠-- 同類樣本方差盡可能小-- 綜合 知識點補充 - 二范數二范數&#xff08;2-norm&#xff09;詳解定義幾何意義性質…

vue3中省市區聯動在同一個el-form-item中咋么設置rules驗證都不為空的效果

在開發中出現如下情況&#xff0c;在同一個el-form-item設置了省市區三級聯動的效果 <el-form-item label"地區" prop"extraProperties.Province"><el-row :gutter"20"><el-col :span"12"><el-select v-model&qu…

OpenHarmony開發實戰:HDF驅動開發流程

概述 HDF&#xff08;Hardware Driver Foundation&#xff09;驅動框架&#xff0c;為驅動開發者提供驅動框架能力&#xff0c;包括驅動加載、驅動服務管理、驅動消息機制和配置管理。并以組件化驅動模型作為核心設計思路&#xff0c;讓驅動開發和部署更加規范&#xff0c;旨在…

Unity3D Excel表格數據處理模塊詳解

一、引言 在Unity3D開發中&#xff0c;我們經常需要處理大量的數據&#xff0c;這些數據可能是游戲配置、角色屬性、道具信息等。Excel表格作為一種常見的數據存儲方式&#xff0c;具有結構清晰、易于編輯的特點&#xff0c;因此被廣泛應用于游戲開發中。本文將詳細介紹如何在…

四川赤橙宏海商務信息咨詢有限公司抖音開店靠譜嗎?

在數字化浪潮席卷全球的今天&#xff0c;電商行業正以前所未有的速度發展。而在這個大潮中&#xff0c;四川赤橙宏海商務信息咨詢有限公司憑借其專業的團隊和前瞻性的戰略眼光&#xff0c;專注于抖音電商服務&#xff0c;為廣大商家提供了一站式解決方案&#xff0c;成為了行業…

面經-常用框架

1.Spring 1.1什么是Spring框架&#xff1f; Spring 是?種輕量級開發框架&#xff0c;旨在提?開發?員的開發效率以及系統的可維護性。 Spring 的 6 個特征:核?技術&#xff0c;測試&#xff0c;數據訪問&#xff0c;Web?持&#xff0c;集成&#xff0c;語? 1.2列舉?些重…

Ubuntu20.04安裝LibTorch并完成高斯濺射環境搭建

0. 簡介 最近受到優刻得的使用邀請&#xff0c;正好解決了我在大模型和自動駕駛行業對GPU的使用需求。UCloud云計算旗下的Compshare的GPU算力云平臺。他們提供高性價比的4090 GPU&#xff0c;按時收費每卡2.6元&#xff0c;月卡只需要1.7元每小時&#xff0c;并附帶200G的免費…

接口自動化測試-項目實戰

什么是接口自動化測試&#xff1a;使用工具或代碼代替人對接口進行測試 測試項目結構&#xff08;python包&#xff09; 1、接口api包 2、script:業務腳本 3、data:數據 4、config.py :配置文件 5、reporter:報告 錯誤問題&#xff1a; 1、未打印任何東西。添加pip ins…

走馬燈封裝

走馬燈功能需求&#xff1a; 支持定時切換&#xff1b;支持左右按鈕切換&#xff08;根據鼠標是否在切換組件內展示和隱藏左右切換按鈕&#xff09;&#xff1b;支持底部標識切換&#xff1b; 走馬燈 完整代碼如下&#xff1a; /*** class 走馬燈*/import react, { Compone…

C語言 指針——緩沖區溢出與緩沖區溢出攻擊

目錄 緩沖區溢出攻擊 緩沖區溢出攻擊實例 字符串的安全輸入方法?編輯 防止緩沖區溢出的兩個要點 緩沖區溢出攻擊 網絡黑客常針對系統和程序自身存在的漏洞&#xff0c;編寫相應的攻擊程序 ? 對緩沖區溢出漏洞的攻擊 —— 最常見 ? 幾乎占到了網絡攻擊次數的一半以上…

Android (已解決)Gradle 編譯失敗 Unsupported class file major version 61

文章目錄 一、報錯原因二、解決方法 一、報錯原因 新版本的 Android Studio 默認使用的是 Java 17 LTS&#xff0c;而這個歷史項目的 Gradle 版本很低&#xff0c;不支持高版本的 Java。 具體原因&#xff1a;Java 17 (major version 61) 編譯的 class 文件&#xff0c;如果在…

逆向學習匯編篇:指令的操作

本節課在線學習視頻&#xff08;網盤地址&#xff0c;保存后即可免費觀看&#xff09;&#xff1a; ??https://pan.quark.cn/s/660c759dea95?? 在逆向工程中&#xff0c;深入理解匯編語言的指令操作是至關重要的。匯編指令是計算機硬件與軟件之間的橋梁&#xff0c;它們直…

DevEco Studio有時會多出來.js和.map文件,導致項目不能運行

1、問題 在使用DevEco的時候有時候會出現啥都沒干&#xff0c;但是在項目的目錄下會自動生成和文件同名的.js和.js.map文件&#xff0c;至于為什么會生成目前我也不知道&#xff0c;如果想要更深了解可以到論壇討論&#xff1a;華為開發者論壇。生成.js和.js.map文件優…

Terraform基礎概念一

Terraform基礎概念一 1.Infrastructure-as-Code(IaC)概念1.1 IaC優勢1.2 IaC工具1.3 IaC的兩種方式 2.Terraform基礎概念2.1 Terraform工作原理2.2 Terraform 工作流 3.總結 1.Infrastructure-as-Code(IaC)概念 基礎設施即代碼&#xff08;Infrastructure-as-Code&#xff0c;…

SVN 的忽略(Ignore)和遞歸(Recursively)以及忽略部分

SVN中忽略大家經常用到&#xff0c;但總是似懂非懂&#xff0c;下面就詳細展開說明一下忽略如何設置。 兩個忽略 通常設置忽略都是文件夾和里面的文件都忽略&#xff0c;通常只需要鼠標右鍵點擊忽略就可以了&#xff0c;如圖&#xff1a; 第一個忽略用的最多&#xff0c;就是…

關于GPIO的上拉、下拉,無上下拉

1.GPIO_PULLUP&#xff08;上拉&#xff09; 作用和原理 作用&#xff1a;上拉模式會在GPIO引腳和電源電壓&#xff08;Vcc&#xff09;之間連接一個內部上拉電阻。原理&#xff1a;當引腳配置為輸入模式時&#xff0c;如果引腳沒有連接到其他外部電路&#xff0c;內部上拉電…

排序算法(C語言版)

前言 排序作為生產環境中常見的需求之一&#xff0c;對整個產品有舉足輕重的影響&#xff0c;可以說使用一個合適的排序算法是業務邏輯中比較重要的一部分。今天我們就來介紹常見的排序算法以及實現 排序 所謂排序無非就是按照特定的規則對一組數據就行順序化。 常見的排序有…

Spring項目報錯解讀與全部報錯詳解

你好,我是Qiuner. 為幫助別人少走彎路和記錄自己編程學習過程而寫博客 這是我的 github https://github.com/Qiuner ?? ? gitee https://gitee.com/Qiuner &#x1f339; 如果本篇文章幫到了你 不妨點個贊吧~ 我會很高興的 &#x1f604; (^ ~ ^) 想看更多 那就點個關注吧 我…

圖像大模型中的注意力和因果掩碼

AIM — 圖像領域中 LLM 的對應物。盡管 iGPT 已經存在 2 年多了&#xff0c;但自回歸尚未得到充分探索。在本文中&#xff0c;作者表明&#xff0c;當使用 AIM 對網絡進行預訓練時&#xff0c;一組圖像數據集上的下游任務的平均準確率會隨著數據和參數的增加而線性增加。 要運…

uniApp獲取實時定位

通過你獲取的key放到項目manifest.json里面&#xff0c;對應填寫你所需要的key值&#xff0c;還有高德用戶名 用戶名&#xff1a; key值的位置&#xff1a; 代碼&#xff1a; html: <view class"intList pdNone"><view class"label">詳細地…