React 讓開發者可以透過兩種主要方式建立元件:功能元件 和 類別元件。雖然兩者都具有定義可重複使用 UI 片段的相同目的,但它們在語法、功能和用法方面有所不同。
函數式元件是傳回 JSX 的 JavaScript 函數。它們簡單且輕量級,主要設計用於呈現 UI。隨著 React Hooks 的引入,功能元件變得更加強大,現在可以管理狀態和生命週期方法。
const Greeting = ({ name }) => { return <h1>Hello, {name}!</h1>; };
類別元件是擴展 React.Component 的 ES6 類別。它們具有更複雜的結構,並且可以使用狀態和生命週期方法,而無需額外的工具。在 React Hooks 之前,類別元件對於管理狀態和邏輯至關重要。
import React, { Component } from "react"; class Greeting extends Component { render() { return <h1>Hello, {this.props.name}!</h1>; } }
Aspect | Functional Components | Class Components |
---|---|---|
Definition | Defined as a JavaScript function. | Defined as an ES6 class. |
State Management | Use React Hooks (e.g., useState). | Use this.state for state. |
Lifecycle Methods | Managed with Hooks like useEffect. | Use built-in lifecycle methods. |
Syntax Simplicity | Simple and concise. | More verbose with boilerplate. |
Performance | Generally faster and lightweight. | Slightly slower due to overhead. |
Usage Trend | Preferred in modern React development. | Common in legacy codebases. |
React Hooks 提供對功能元件中的狀態和生命週期方法的存取。
const Greeting = ({ name }) => { return <h1>Hello, {name}!</h1>; };
import React, { Component } from "react"; class Greeting extends Component { render() { return <h1>Hello, {this.props.name}!</h1>; } }
狀態和生命週期方法是內建的,但需要更多樣板。
const Counter = () => { const [count, setCount] = React.useState(0); return ( <div> <p>Count: {count}</p> <button onClick={() => setCount(count + 1)}>Increment</button> </div> ); };
const Timer = () => { React.useEffect(() => { console.log("Component Mounted"); return () => console.log("Component Unmounted"); }, []); return <p>Timer is running...</p>; };
由 Hooks 提供支援的功能元件是 React 開發的現代標準。它們提供了一種更乾淨、更有效的方式來管理狀態、生命週期和副作用。類組件仍然與舊項目相關,但正在逐漸被替換。
函數式元件和類別元件在 React 開發中都佔有一席之地,但 React Hooks 的興起已經將偏好轉向了函數式元件。對於新項目,建議選擇功能組件,它提供簡單性、靈活性和增強的性能。
以上是React 中的函數元件與類別元件:選擇哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!