Skip to main content

學好 React 所需要的 JavaScript 基本功

1. JavaScript 基本語法

React 的程式碼主要用 JavaScript 撰寫,因此你需要熟悉以下基礎語法:

(1) 變數與資料型別

  • 變數宣告:熟悉 let、const 和 var 的使用,以及它們的區別。

    • let:用於可重新賦值的變數。
    • const:用於不可重新賦值的變數(但物件或陣列的內容仍可修改)。
    • var:舊的變數宣告方式,建議少用,因為有作用域問題。
  • 資料型別:了解基本型別(string、number、boolean、null、undefined)和參考型別(object、array)。

  • 範例程式碼

let name = "小明";
const age = 25;
let isStudent = true;
const person = { name: "小明", age: 25 };
const numbers = [1, 2, 3, 4, 5];

(2) 運算子與條件語句

  • 運算子:熟悉算術運算(+、-、*、/)、比較運算 ( ==、===、>、< ) 和邏輯運算 ( &&、||、! ) 。

  • 條件語句:學會使用 if...else 和 switch 來控制程式流程。

  • 範例程式碼

let score = 85;
if (score >= 60) {
console.log("及格了!");
} else {
console.log("不及格...");
}

(3) 迴圈與迭代

  • 熟悉 for、while 和 forEach 等迴圈,用於處理陣列或重複執行任務。

  • 範例程式碼

const fruits = ["蘋果", "香蕉", "橘子"];
fruits.forEach((fruit) => {
console.log(fruit);
});

2. 函式(Functions)

React 元件本質上就是函式,因此你需要熟悉 JavaScript 的函式寫法:

(1) 函式宣告與箭頭函式

  • 函式宣告:傳統的函式定義方式。

  • 箭頭函式:React 中常用,語法簡潔,且 this 行為更直觀。

  • 範例程式碼

// 傳統函式
function greet(name) {
return `你好,${name}`;
}

// 箭頭函式
const sayHello = (name) => `你好,${name}`;

console.log(greet("小明")); // 你好,小明!
console.log(sayHello("小華")); // 你好,小華!

(2) 函式傳遞與回調

  • 了解如何將函式作為參數傳遞,這在 React 的事件處理中很常見。

  • 範例程式碼

const handleClick = () => {
console.log("按鈕被點擊了!");
};

const button = document.createElement("button");
button.addEventListener("click", handleClick);

3. 陣列與物件操作

React 經常需要操作資料結構,因此熟悉陣列和物件的處理方法至關重要。

(1) 陣列方法

  • 學會常用的陣列方法:map、filter、reduce、find 等,這些在 React 中用來動態渲染列表非常重要。

  • 範例程式碼

const numbers = [1, 2, 3, 4, 5];

// map:轉換陣列
const doubled = numbers.map((num) => num * 2);
console.log(doubled); // [2, 4, 6, 8, 10]

// filter:篩選陣列
const evens = numbers.filter((num) => num % 2 === 0);
console.log(evens); // [2, 4]

(2) 物件操作

  • 學會存取、修改物件屬性,以及使用解構賦值(destructuring)。

  • 範例程式碼

const person = { name: "小明", age: 25 };

// 解構賦值
const { name, age } = person;
console.log(name, age); // 小明 25

// 修改物件
person.age = 26;
console.log(person); // { name: "小明", age: 26 }

4. ES6+ 語法

React 廣泛使用 ES6+ 的現代 JavaScript 語法,以下是必須掌握的重點:

(1) 箭頭函式

  • 已在上方介紹,React 中常用於事件處理和元件定義。

(2) 解構賦值

  • 用於快速提取陣列或物件中的值。

  • 範例程式碼

const user = { id: 1, username: "小明" };
const { id, username } = user;
console.log(id, username); // 1 小明

(3) 模板字面量

  • 用於字符串拼接,React 中常用於動態生成內容。

  • 範例程式碼

const name = "小明";
const greeting = `你好,${name}!今天是星期天。`;
console.log(greeting); // 你好,小明!今天是星期天。

(4) 預設參數與展開運算子

  • 預設參數:為函式參數設定預設值。

  • 展開運算子(...):用於複製陣列或物件,React 中常用於傳遞 props。

  • 範例程式碼

// 預設參數
const greet = (name = "訪客") => `你好,${name}`;
console.log(greet()); // 你好,訪客!

// 展開運算子
const arr1 = [1, 2];
const arr2 = [...arr1, 3, 4];
console.log(arr2); // [1, 2, 3, 4]

const obj1 = { a: 1 };
const obj2 = { ...obj1, b: 2 };
console.log(obj2); // { a: 1, b: 2 }

5. 非同步 JavaScript

React 經常需要處理非同步操作,例如從 API 獲取資料。以下是相關知識:

(1) Promise

  • 了解 Promise 的基本用法,用於處理非同步操作。

  • 範例程式碼

const fetchData = () => {
return new Promise((resolve) => {
setTimeout(() => resolve("資料已取得!"), 1000);
});
};

fetchData().then((data) => console.log(data)); // 資料已取得!

(2) async/await

  • 更簡潔的非同步語法,React 中常用於處理 API 請求。

  • 範例程式碼

const fetchData = async () => {
const response = await fetch("https://api.example.com/data");
const data = await response.json();
console.log(data);
};

fetchData();

6. DOM 操作基礎

雖然 React 會處理大部分 DOM 操作,但了解基礎 DOM 操作有助於理解 React 的虛擬 DOM。

(1) 選取元素

  • 使用 document.querySelector 選取 DOM 元素。

  • 範例程式碼

const button = document.querySelector("#myButton");
button.addEventListener("click", () => {
console.log("按鈕被點擊!");
});

(2) 修改 DOM

  • 學會動態修改元素內容或樣式。

  • 範例程式碼

const div = document.querySelector("#myDiv");
div.textContent = "這是新的內容!";
div.style.color = "blue";

7. 模組化(Modules)

React 專案通常使用 ES 模組來組織程式碼,熟悉 import 和 export 是必要的。

(1) 匯出與匯入

  • 範例程式碼
// utils.js
export const add = (a, b) => a + b;

// main.js
import { add } from "./utils.js";
console.log(add(2, 3)); // 5

8. 開始學習 React 的準備

在掌握以上 JavaScript 基礎後,你可以開始學習 React 的核心概念,例如:

  • JSX:React 的語法糖,結合 HTML 和 JavaScript。
  • 元件(Components):React 的基本單元,可以是函式元件或類元件。
  • Props 和 State:用於傳遞資料和管理元件狀態。
  • 事件處理:React 的事件系統,例如 onClick。
  • Hooks:如 useState 和 useEffect,用於管理狀態和副作用。

以下是一個簡單的 React 範例,展示如何使用上述 JavaScript 知識:

import React, { useState } from "react";

function App() {
const [count, setCount] = useState(0);

const handleClick = () => {
setCount(count + 1);
};

return (
<div>
<h1>計數器: {count}</h1>
<button onClick={handleClick}>點我加一</button>
</div>
);
}

export default App;

學習建議與實作步驟

1. 練習環境

  • 使用線上編輯器(如 CodeSandbox 或 Replit)練習 JavaScript 基礎。
  • 安裝 Node.js 和 VS Code,創建本地 React 專案(使用 create-react-app)。

步驟:

npx create-react-app my-app
cd my-app
npm start

2. 學習資源

  • MDN Web Docs:學習 JavaScript 語法和 DOM 操作。
  • freeCodeCamp:提供免費的 JavaScript 和 React 課程。
  • React 官方文件:學習 JSX、元件和 Hooks。

3. 實作練習

  • 寫一個簡單的計數器應用,練習 useState 和事件處理。
  • 建立一個待辦事項清單,練習陣列操作(map 和 filter)和狀態管理。

4. 逐步進階

  • 學習如何使用 useEffect 從 API 獲取資料。
  • 熟悉 React Router 來處理頁面導航。
  • 學習狀態管理工具(如 Redux 或 Context API)。