---
# System prepended metadata

title: "\U0001F3C5Day 21 -  React 基礎練習 (6) - useState"
tags: [React 直播班 - 2025 冬季班]

---

# 🏅Day 21 -  React 基礎練習 (6) - useState

今日我們要進入 React Hook，並嘗試用 useState 這個 Hook 來做出改變狀態值的練習。
### React Hook
Hook 其實就是 JavaScript function，但要特別注意兩個使用的規則：
1. 只在最上層呼叫 Hook，不要在迴圈、條件式或是巢狀的 function 內呼叫 Hook（[詳細解說](https://react.dev/learn/state-a-components-memory#meet-your-first-hook)）
2. 只在 React Function 中呼叫 Hook，例如：在 React function component 中呼叫 Hook。

今日的練習我們會著重在規則二，也就是練習『在 React function component 中呼叫 Hook』。

### React function component
```jsx=
function Example() {
    // 在這邊使用 Hook
  return (
    // 在這邊加入 Template，例如：
    <p>Hello</p>
  )
}
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Example />);
```
### useState
useState 是被用來加入一些基礎的變數狀態。useState 會回傳一組數值：目前 state 數值和一個可以更新 state 的方法，寫法如下：
```jsx=
const [count, setCount] = React.useState(0);
```
透過 setCount 方法可以改變 count 的值
```jsx=
setCount(prevCount => prevCount + 1);
```

### 補充：JSX 的事件綁定
在 JSX 中，事件綁定是以小駝峰的方式命名（camelCase），因此 onclick 事件即為 onClick、onchange 事件為 onChange。
```jsx=
<button onClick={() => {}}> 按鈕 </button>
```


參考：
[State: A Component's Memory](https://react.dev/learn/state-a-components-memory)

## 題目
請複製 （右下角 fork）這個[範例](https://codepen.io/yen-kg/pen/BaXPRMY)，並撰寫內容，完成以下畫面：

![](https://i.imgur.com/H0Nczyx.gif)


<!-- 解答： 
```
function Example() {
  const [count, setCount] = React.useState(0);

  const add = () => {
    setCount(prevCount => prevCount + 1);
  };

  const reduce = () => {
    setCount(prevCount => prevCount - 1);
  };

  return (
    <div>
      <p>現在的數字是 {count} </p>
      <button onClick={add}>加一</button>
      <button onClick={reduce}>減一</button>
    </div>
  );
}
```
-->



| yaha | codepen |
| -------- | -------- |
| Miikaa    | [codepen](https://codepen.io/Miikaa/pen/MYeeWKG)     |
| 7lun    | [codepen](https://codepen.io/mfyvqhsn-the-bold/pen/ZYOpJad?editors=1011)     | 
| 老屠    | [codepen](https://codepen.io/fsgfxvlb-the-selector/pen/yyJaPaz?editors=1010)     | 
| Zem    | [codepen](https://codepen.io/dgldwqlg-the-vuer/pen/YPWGLMr)     |
| Jin    | [codepen](https://codepen.io/Jin-L/pen/JoKRvgE)     |
| Nooooora | [CodePen](https://codepen.io/Nora-Ch/pen/zxBKaqo) |
| Tetsu |[Codepen](https://codepen.io/ttgchang/pen/KwMgezP)|
| Melanie |[Codepen](https://codepen.io/pnrcspte-the-animator/pen/ZYOpROQ)|
| Chia |[Codepen](https://codepen.io/Chia-the-encoder/pen/ZYOpRpQ)|
| 7Red |[Codepen](https://codepen.io/cch2655/pen/jErMKxb)|
| Marco |[Codepen](https://codepen.io/MarcoChiu/pen/OPXREqL)|
| andy |[Codepen](https://codepen.io/ewnblckz-the-styleful/pen/wBWzXZB?editors=0010)|
| 地瓜 |[Codepen](https://codepen.io/ChippyYU/pen/YPWGvdR)|
| cks40660 |[Codepen](https://codepen.io/CKS40660/pen/zxBKLXe)|
| RUDY |[Codepen](https://codepen.io/Rudy-crw/pen/MYejqeZ?editors=1011)|
| 平平 |[Codepen](https://codepen.io/ypinpin/pen/vEKXzve)|
| KOMATSU PEI |[Codepen](https://codepen.io/Komatsu2021/pen/ZYOpoZE?editors=1011)|
| Eileen |[Codepen](https://codepen.io/Eileen-io/pen/vEKXQaE)|
| Jenna |[Codepen](https://codepen.io/abiscc14/pen/MYejZoL)|
| 小懿 |[Codepen](https://codepen.io/YT-the-vuer/pen/ByzLMyG?editors=1111)|
| Percy |[Codepen](https://codepen.io/Percy-Ku/pen/VYjKgXd?editors=1010)|
| kashiwatei |[Codepen](https://codepen.io/kashiwatei/pen/GgqjzLa?editors=1010)|
| Eric | [Codepen](https://codepen.io/wc-su/pen/gbMwEEw) |
| 社子畢卡索 | [Codepen](https://codepen.io/pen?template=GgqjaNX)|
| 舜仁 | [Codepen](https://codepen.io/shunjen/pen/wBWzbqZ)|
| FangFang | [Codepen](https://codepen.io/Fang-the-selector/pen/GgqjaxP?editors=1010)|
| cindy | [Codepen](https://codepen.io/a50134/pen/dPXpBYw?editors=0010)|
| wind | [Codepen](https://codepen.io/wind7y/pen/RNRGXEL)|
| 叮咚 | [Codepen](https://codepen.io/pinchieh-lin/pen/ZYOBQMd)|
| 登登登 | [Codepen](https://codepen.io/Duncanin/pen/raLWmme?editors=0010)|
| 星雪糖 | [Codepen](https://codepen.io/vfpofbgm-the-scripter/pen/MYebopv?editors=0010)|
 Leonard | [Codepen](https://codepen.io/hyyfjqra-the-sans/pen/RNRoZNr?editors=0010)|
| Rogan   | [Codepen](https://codepen.io/RoganHsu/pen/KwMNByW?editors=1111)             |
| ------- | --------------------------------------------------------------------------- |
| Wafa    | [Codepen](https://codepen.io/dqricwgo-the-reactor/pen/jErVJrq?editors=0010) |
| JiaMori | [Codepen](https://codepen.io/jiamori/pen/emzvEYe)                           |
| tanuki  | [Codepen](https://codepen.io/tanuki320/pen/QwEgZRx?editors=1010)            |
| ZoeKang | [Codepen](https://codepen.io/byehywmx-the-animator/pen/GgqvZmp)             |
| 小趴    | [Codepen](https://codepen.io/papa2415/pen/qENXNwm)                          |
| TWLeoC  | [Codepan](https://codepen.io/TWLeoC/pen/NPrvLBP)                            |
| Wen     | [Codepen](https://codepen.io/hsiao-kevin/pen/EaybREQ)                       |
| 伊迪    | [Codepen](https://codepen.io/sorryFish/pen/bNevYbP)                         | 