2025React面試題集錦

1. React 是什么?它有哪些主要特點?

React 是由Facebook開發的開源JavaScript庫,用于構建用戶界面(UI),尤其適合開發復雜的單頁應用(SPA)。
主要特點

  • 聲明式編程:只需描述UI應該是什么樣子(如return <div>Hello</div>),React會自動處理DOM更新,無需手動操作DOM。
  • 組件化:將UI拆分為獨立、可復用的組件(如按鈕、表單),便于維護和復用。
  • 虛擬DOM:React會在內存中維護一個與真實DOM對應的虛擬DOM,通過對比虛擬DOM的差異(Diffing算法),只更新必要的部分,提升性能。
  • 單向數據流:數據通過props從父組件流向子組件,避免數據混亂,便于調試。
  • 跨平臺:基于React可擴展到移動端(React Native)、桌面端(Electron)等平臺。

2. 什么是JSX?

JSX(JavaScript XML)是React中用于描述UI的語法擴展,允許在JavaScript中直接編寫類似HTML的代碼。
特點

  • 本質是React.createElement()的語法糖,最終會被Babel編譯為JavaScript對象。
  • 支持嵌入JavaScript表達式(用{}包裹),如<div>{user.name}</div>
  • 與HTML的區別:標簽閉合(如<img />)、className替代class、htmlFor替代for等。
  • 示例:
    const element = <h1>Hello, {name}</h1>; // JSX語法
    // 編譯后等價于:
    const element = React.createElement('h1', null, `Hello, ${name}`);
    

3. 類組件和函數組件有什么區別?

維度 類組件 函數組件
定義方式 基于ES6類,繼承React.Component 普通JavaScript函數或箭頭函數
狀態管理 使用this.statethis.setState 依賴Hooks(如useState
生命周期 有內置生命周期方法(如componentDidMount useEffect模擬生命周期
this綁定 需要處理this指向問題(如箭頭函數綁定) this,更簡潔
代碼風格 較繁瑣,適合復雜邏輯 更簡潔,推薦用于大多數場景
示例 class MyComponent extends React.Component { render() { return <div />; } } function MyComponent() { return <div />; }

現狀:函數組件+Hooks已成為React主流寫法,類組件逐漸被替代。

4. React中的狀態(state)是什么?如何更新狀態?

state 是組件內部管理的動態數據,當state變化時,組件會重新渲染。

  • 特點:私有性(僅組件內部可訪問)、可變性(需通過特定方式更新)。
  • 類組件中更新:使用this.setState(),是異步操作,會觸發組件重渲染。
    this.setState({ count: this.state.count + 1 }, () => {// 回調函數中可獲取更新后的stateconsole.log(this.state.count);
    });
    
  • 函數組件中更新:使用useState Hook返回的更新函數,同樣是異步的。
    const [count, setCount] = useState(0);
    setCount(prevCount => prevCount + 1); // 推薦使用函數形式,確保依賴前一次狀態
    

5. React中的props是什么?

props(properties的縮寫)是從父組件傳遞到子組件的數據,類似函數參數。

  • 特點:只讀性(子組件不能修改props,若需修改,需由父組件更新)、單向傳遞(父→子)。
  • 示例:
    // 父組件
    function Parent() {return <Child name="Alice" age={18} />;
    }// 子組件
    function Child(props) {return <div>{props.name}, {props.age}</div>;
    }
    
  • 可通過PropTypes或TypeScript定義props類型,增強代碼健壯性。

6. 什么是受控組件和非受控組件?

  • 受控組件:表單元素(如input、select)的值由React的state控制,通過onChange事件同步state和表單值。
    function Input() {const [value, setValue] = useState('');return <input value={value} onChange={(e) => setValue(e.target.value)} />;
    }
    
  • 非受控組件:表單元素的值由DOM自身管理,通過ref獲取值,類似原生HTML。
    function Input() {const inputRef

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

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

相關文章

設計模式:迭代器模式(Iterator Pattern)

文章目錄一、概念二、實例分析三、示例代碼一、概念 迭代器模式 是一種 行為型設計模式&#xff0c;用于在不暴露集合對象內部結構的前提下&#xff0c;順序訪問集合中的元素。 換句話說&#xff1a; 集合類只負責數據存儲&#xff1b;迭代器類負責遍歷集合&#xff1b;使用者…

Vue 3 學習路線指南

階段一:基礎入門 (1-2周) 1.1 環境準備 # 安裝 Node.js (推薦 18+ 版本) # 安裝 Vue CLI 或使用 Vite npm create vue@latest my-vue-app cd my-vue-app npm install npm run dev1.2 Vue 3 核心概念 響應式系統:ref(), reactive(), computed() 組合式 API:setup() 函數 模…

使用 `hover:not-[:has(:hover)]` 避免「父元素和子元素同時 hover」時的樣式沖突

:hover:not-(:has(:hover)) has() CSS 4 引入的“父選擇器”&#xff0c;意思是&#xff1a;匹配那些里面包含某個子元素/狀態的元素。 例如&#xff1a;:has(:hover) 表示「自身包含正在被 hover 的子元素」。 :not() 取反偽類&#xff0c;表示不匹配里面的條件。 比如我…

第三十天-DMA串口實驗

一、DMA概述二、DMA通道注意&#xff0c;想要往串口中寫數據&#xff0c;外部請求信號應該是USARTx_TX&#xff0c;當DR寄存器為空時&#xff0c;產生TX信號&#xff0c;請求DMA。反之&#xff0c;從串口中讀數據&#xff0c;外部請求信號應該是USARTx_RX&#xff0c;當DR寄存器…

C/C++ 中的inline(內聯函數關鍵字)詳解

在 C/C 編程中&#xff0c;函數調用雖然帶來了代碼復用和可讀性提升&#xff0c;但頻繁調用小型函數可能會產生額外的調用開銷&#xff08;call overhead&#xff09;&#xff0c;比如棧幀的建立與銷毀、參數傳遞等。 為了減少這種開銷&#xff0c;C 引入了 inline&#xff08;…

2025 年高教社杯全國大學生數學建模競賽A 題 煙幕干擾彈的投放策略完整成品 思路 模型 代碼 結果 全網首發高質量!!!

煙幕干擾彈主要通過化學燃燒或爆炸分散形成煙幕或氣溶膠云團,在目標前方特定空域形成遮蔽&#xff0c;干擾敵方導彈&#xff0c;具有成本低、效費比高等優點。隨著煙幕干擾技術的不斷發展&#xff0c;現已有多種投放方式完成煙幕干擾彈的定點精確拋撒,即在拋撒前能精確控制煙幕…

嵌入式第四十五天(51單片機相關)

一.1.CPU、MPU、MCU、GPU&#xff1a; CPU&#xff08;中央處理器&#xff09;&#xff1a;計算機的核心部件&#xff0c;負責執行指令和處理數據。 MPU&#xff08;微處理器&#xff09;&#xff1a;通常指更通用的處理器&#xff0c;強調計算能力。 MCU&#xff08;微控制器&…

今天面了一個Java后端工程師,真的讓我猛抬頭

今天面了一個Java后端工程師,真的讓我猛抬頭啊. 現在面試不像傳統的八股文面試,我更多問的都是項目場景相關的問題,但是都能回答的不錯.這一點我還是很驚訝的。 不僅如此,她的技術也很扎實,對Java核心機制&#xff08;JVM、并發、集合等&#xff09;理解深入&#xff0c;回答…

攔截器和過濾器(理論+實操)

攔截器和過濾器 本文旨在夯實基礎以及實戰加深理解,目的是更深的理解以便掌握,希望能跟著動手敲一遍,絕對受益匪淺 在本文,我會先給出兩者的區別(理論知識),隨后是兩者各自的實操實現 文章目錄攔截器和過濾器什么是過濾器和攔截器?1.過濾器2.攔截器執行整體流程攔截器和過濾器…

HTB 賽季8靶場 - Guardian

各位好&#xff0c;最近我的kali崩掉了&#xff0c;崩掉了&#xff0c;建議大家避K 番茄C盤瘦身&#xff0c;這家伙修改了我的avrt.dll文件&#xff0c;導致virtualbox不接受我的avrt.dll文件的簽名了&#xff0c;從而導致virtualbox的虛擬機環境全崩無法開機。弄了幾天&#x…

Rust+slint實現一個登錄demo

系列文章目錄 文章目錄系列文章目錄前言一、為什么前端選擇slint而不是Tauri或者其他GUI框架二、開發工具三、代碼編寫項目結構前端代碼編寫后端開發編寫運行效果總結前言 本文章就是一個簡單rust全棧編程的一個小小的示例供rust新手閱讀學習。 一、為什么前端選擇slint而不是…

2025前端面試題及答案(詳細)

HTML5 的新特性有哪些&#xff1f;簡約版本&#xff1a;“HTML5 新特性主要體現在六個方面&#xff1a; 第一&#xff0c;語義化標簽&#xff0c;比如 header、footer、nav 等&#xff0c;讓頁面結構更清晰&#xff1b; 第二&#xff0c;表單增強&#xff0c;新增了 date、emai…

分詞器詳解(二)

&#x1f50d; 第2層&#xff1a;中等深度&#xff08;15分鐘理解&#xff09; 1. 理論基礎 1.1 BPE的數學原理 核心思想&#xff1a;通過迭代合并高頻字符對構建詞匯表 算法形式化&#xff1a; 初始化詞匯表 V0{c1,c2,...,cn}V_0 \{c_1, c_2, ..., c_n\}V0?{c1?,c2?,...,c…

嵌入式學習 51單片機(3)

UART 概述通用異步收發器&#xff08;UART&#xff09;是一種全雙工、串行、異步通信協議&#xff0c;常用于設備間數據傳輸。包含兩根信號線&#xff1a;RXD&#xff08;接收信號線&#xff09;TXD&#xff08;發送信號線&#xff09;通信方式單工通信方向固定&#xff0c;僅支…

Redis AOF 持久化:銀行的 “交易流水單” 管理邏輯

目錄 一、AOF 的核心邏輯&#xff1a;“每筆交易都記流水” 二、AOF 的三個步驟&#xff1a;從 “臨時記錄” 到 “正式歸檔” 1. 命令追加&#xff1a;記到 “臨時小本本” 2. 寫入與同步&#xff1a;抄到 “正式流水冊” 3. AOF 還原&#xff1a;拿 “流水冊” 重放交易…

代碼隨想錄訓練營第三十天|LeetCode452.用最少數量的箭引爆氣球、LeetCode435.無重疊空間、LeetCode763.劃分字母空間

452.用最少數量的箭引爆氣球 貪心算法 重合最多的氣球射一箭&#xff0c;就是局部用箭數量最少的&#xff0c;全局的用箭數量就是最少的。 首先對二維數組進行排序&#xff0c;這樣就可以讓氣球更加緊湊。 思路&#xff1a;當前氣球是否和上一個氣球區間重合&#xff0c;如…

數據庫事務隔離級別與 MVCC 機制詳解

最近在準備面試&#xff0c;正把平時積累的筆記、項目中遇到的問題與解決方案、對核心原理的理解&#xff0c;以及高頻業務場景的應對策略系統梳理一遍&#xff0c;既能加深記憶&#xff0c;也能讓知識體系更扎實&#xff0c;供大家參考&#xff0c;歡迎討論。在數據庫并發操作…

【Cursor-Gpt-5-high】StackCube-v1 任務訓練結果不穩定性的分析

1. Prompt 我是機器人RL方向的博士生正在學習ManiSkill&#xff0c;在學習時我嘗試使用相同命令訓練同一個任務&#xff0c;但是我發現最終的 success_once 指標并不是相同的&#xff0c;我感到十分焦慮&#xff0c; 我使用的命令如下&#xff1a; python sac.py --env_id"…

文檔權限設置不合理會帶來哪些問題

文檔權限設置不合理會導致信息泄露、合規風險、協作效率下降、責任難以追溯、知識資產流失、員工信任受損、管理成本增加、企業戰略受阻。這些問題不僅影響日常運營&#xff0c;更會對企業的長遠發展構成威脅。根據IBM《2024數據泄露成本報告》&#xff0c;全球企業因數據泄露的…

Linux網絡服務——基礎設置

網絡服務命令1.ping命令作用&#xff1a;測試網絡連通性&#xff08;使用icmp協議&#xff09;常見選項&#xff1a;-c&#xff1a;指定ping的次數&#xff0c;默認無限次-I&#xff1a;指定發送請求的網卡[rootlocalhost ~]# ping 192.168.77.78 -c 4 -I ens160 PING 192.168.…