理解異步編程:Promise與async/await的應用

從零開始學習React:建立動態單頁應用



1. 介紹React

1.1 React是什麼?

React 是由 Facebook(現為 Meta)開發並於 2013 年開源的一個 JavaScript 前端函式庫,主要用於構建用戶界面(UI)。與傳統的網頁開發方法相比,React 提供了一種組件化開發的方式,使開發者可以將頁面拆分為獨立、可重用的組件,從而提高開發效率和可維護性。

1.2 為什麼選擇React?

與 Vue.js 和 Angular 等其他前端框架相比,React 具有以下優勢:

  • 組件化開發:可重用的組件提高了代碼的可維護性和可讀性。

  • 虛擬 DOM:React 使用虛擬 DOM 來優化渲染,提高應用性能。

  • 靈活性:React 只關注 UI 層,可與不同的技術堆疊結合使用。

  • 強大社群與生態系統:擁有豐富的開源庫和強大的社區支持。

2. React 的基礎概念

2.1 JSX:JavaScript 與 HTML 的結合

JSX(JavaScript XML)是 React 提供的語法擴展,允許開發者在 JavaScript 代碼中直接編寫類似 HTML 的標記,從而提高開發效率。例如:

const element = <h1>Hello, React!</h1>;

JSX 會在編譯過程中被轉換為 React.createElement() 調用,使其能夠被瀏覽器解析。

2.2 組件(Components)

React 的核心概念之一是 組件,分為函數式組件(Functional Components)類別型組件(Class Components)

函數式組件:

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

類別型組件:

class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}
2.3 React 的狀態管理(State Management)

React 的 state 用於管理組件內部的數據變化。例如,使用 useState 管理狀態:

import { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);
  return (
    <button onClick={() => setCount(count + 1)}>
      點擊次數:{count}
    </button>
  );
}
2.4 生命週期方法(Component Lifecycle)

React 組件的生命週期可分為三個階段:

  • 掛載(Mounting)componentDidMount()

  • 更新(Updating)componentDidUpdate()

  • 卸載(Unmounting)componentWillUnmount()

React Hooks 提供了 useEffect 來管理副作用,例如:

useEffect(() => {
  console.log('組件加載完成');
  return () => console.log('組件卸載');
}, []);

3. 建立第一個 React 應用

3.1 安裝與設定開發環境

安裝 Node.js 後,可以使用 Create React App 快速建立專案:

npx create-react-app my-app
cd my-app
npm start
3.2 React 應用的基本結構

React 應用的主要文件包括:

  • index.js:應用的入口文件

  • App.js:主組件

3.3 事件處理與條件渲染

React 事件處理類似於 HTML 事件,但需使用 onClick 等 JSX 屬性。例如:

<button onClick={() => alert('Hello React!')}>點擊我</button>

條件渲染可以使用三元運算符:

{isLoggedIn ? <h1>歡迎回來</h1> : <h1>請登入</h1>}

4. React 應用的路由管理

4.1 什麼是單頁應用(SPA)?

SPA 是指單頁應用,所有頁面內容都在同一個 HTML 文件內動態加載,提高用戶體驗。

4.2 React Router 的基本使用

安裝 React Router:

npm install react-router-dom

基本用法:

import { BrowserRouter as Router, Route, Link } from 'react-router-dom';

function App() {
  return (
    <Router>
      <nav>
        <Link to="/">首頁</Link>
        <Link to="/about">關於</Link>
      </nav>
      <Route path="/" exact component={Home} />
      <Route path="/about" component={About} />
    </Router>
  );
}

5. 進階 React 功能

5.1 使用 React Hooks 提升開發效率
  • useState 管理狀態

  • useEffect 處理副作用

  • useContext 簡化狀態管理

5.2 組件的狀態提升與 Prop Drilling

狀態提升(State Lifting)可以讓父組件管理子組件的狀態,以避免深層傳遞。

5.3 使用 Redux 進行全局狀態管理

Redux 允許在應用中存儲和管理全局狀態。安裝 Redux:

npm install redux react-redux

6. 建立動態單頁應用(SPA)實戰專案

6.1 設計應用結構與路由

建立多個頁面組件,如首頁(Home)、產品列表(Products)等,並使用 React Router 進行導航。

6.2 透過 API 獲取與管理數據

使用 fetchaxios 從 API 獲取數據:

useEffect(() => {
  fetch('https://api.example.com/products')
    .then(response => response.json())
    .then(data => setProducts(data));
}, []);
6.3 動態渲染與使用者互動

例如表單輸入驗證:

<input type="text" value={name} onChange={e => setName(e.target.value)} />

7. React 應用的最佳實踐與優化

7.1 提升效能與最佳化策略
  • 代碼分割(Code Splitting):使用 React.lazy()

  • 減少不必要的重新渲染:使用 React.memo()

7.2 React 應用的測試

使用 Jest 和 React Testing Library 進行單元測試。

7.3 部署 React 應用

使用 Vercel、Netlify 或 GitHub Pages 部署。

8. 總結與下一步學習方向

掌握 React 基礎後,可以進一步學習 Next.js(伺服端渲染)、React Native(開發移動應用)等進階技術。

這篇文章為初學者提供了一個清晰的 React 學習路線,希望能幫助你成功入門並開發出自己的動態單頁應用! 🚀


留言