WeHelp
React 是一款開源、高效、且市場佔有率最高的 JavaScript 前端框架,提供組件化開發和跨平台應用的能力。
  1. React 框架簡介
  2. Vite 專案管理
  3. 第一個 React 專案
  4. React 組件基礎
  5. JSX 樣板語法基礎
  6. JSX 樣板:行內樣式
  7. JSX 樣板:事件處理
  8. React 組件屬性
  9. React 組件狀態
  10. React 互動網頁範例
  11. React 表單元件開發
  12. React 組件狀態傳遞
  13. Hooks: useEffect
  14. Hooks: useRef
React 表單元件開發
在 React 中管理表單元件,常見方式是使用 **受控元件(Controlled Components)**:由 React 的 state 保存表單值,並透過 `value` 或 `checked` 與輸入事件同步更新。 ## 常見表單元件管理方式 ### 1. 單行輸入框 `<input type="text">` 使用 `value` 綁定 state,並在 `onChange` 中更新: ```jsx <input type="text" value={name} onChange={(event) => setName(event.target.value)} /> ``` - `event.target.value`:取得文字輸入內容 - `value`:目前由 React 控制的值 --- ### 2. 下拉式選單 `<select>` 同樣使用 `value` 和 `onChange`: ```jsx <select value={role} onChange={(event) => setRole(event.target.value)} > <option value="">請選擇角色</option> <option value="student">學生</option> <option value="teacher">老師</option> </select> ``` --- ### 3. 勾選框 `<input type="checkbox">` 勾選框應使用 `checked`,而不是 `value`: ```jsx <input type="checkbox" checked={subscribed} onChange={(event) => setSubscribed(event.target.checked)} /> ``` - `event.target.checked` 會回傳 `true` 或 `false` - `checked` 表示目前是否勾選 --- ## 完整整合範例 ```jsx import { useState } from "react"; function UserForm() { const [formData, setFormData] = useState({ name: "", role: "", subscribed: false, }); function handleChange(event) { const { name, value, type, checked } = event.target; setFormData((previousData) => ({ ...previousData, [name]: type === "checkbox" ? checked : value, })); } function handleSubmit(event) { event.preventDefault(); console.log("表單資料:", formData); alert(`你好,${formData.name}`); } return ( <form onSubmit={handleSubmit}> <div> <label htmlFor="name">姓名:</label> <input id="name" name="name" type="text" value={formData.name} onChange={handleChange} placeholder="請輸入姓名" /> </div> <div> <label htmlFor="role">身分:</label> <select id="role" name="role" value={formData.role} onChange={handleChange} > <option value="">請選擇</option> <option value="student">學生</option> <option value="teacher">老師</option> <option value="developer">開發者</option> </select> </div> <div> <label> <input name="subscribed" type="checkbox" checked={formData.subscribed} onChange={handleChange} /> 訂閱電子報 </label> </div> <button type="submit">送出</button> </form> ); } export default UserForm; ``` ## 重點整理 1. 文字輸入框與下拉選單使用: ```jsx value={...} onChange={...} ``` 2. 勾選框使用: ```jsx checked={...} onChange={...} ``` 3. 文字或選項內容從: ```jsx event.target.value ``` 4. 勾選狀態從: ```jsx event.target.checked ``` 5. `event.preventDefault()` 可以避免表單送出時重新載入頁面。 這種方式能讓 React 隨時掌握表單目前的狀態,也方便進行驗證、送出資料及重設表單。
相關學習地圖、教學課程
F2E 網站前端工程
從 0 開始,成為網站前端工程師的學習路徑。