iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
Modern Web

MERN Stack + Tailwind CSS - React 小專案實踐計畫系列 第 12

【Day 12】React Hook - useState & useEffect

  • 分享至 

  • xImage
  •  

React Hook 的函數通常以 use 開頭命名,Hook 是 React 16.8 中增加的新功能,讓我們不必寫 class 就能使用 state 以及其他 React 的功能。

useState

作為一個動態網頁,免不了會有資料、數據的傳遞,而什麼是 State 呢? State 是 React 中用來管理元件狀態的變數,也就是狀態變數。與一般以 let, const 宣告的變數不同,在 React 中,只有狀態變數的內容被修改時才會自動重新渲染畫面。

useState 函數可用來宣告及設定狀態變數,宣告方式如下:(狀態變數需宣告為常數 const

const [狀態變數, 設定狀態變數的函數] = useState(初始值)

例如:

import React, { useState } from 'react';

const [title, setTitle] = useState('');

注意:設定狀態變數的函數,習慣用 set 開頭命名

有了狀態變數後,我們就能控制及判斷許多東西,比如説在 元件輸入文字時,可以透過 onChange 事件,當輸入內容改變時,就將狀態變數更改為目前的內容。

<input type="text" placeholder={"標題"} value={title} maxLength={100} onChange={(e)=>setTitle(e.target.value)} className="w-full h-10 rounded-md bg-gray-50 px-4 py-2 mb-10 focus:outline-0 focus:bg-yellow-700/5"></input>

https://ithelp.ithome.com.tw/upload/images/20220927/20152502XtDgWSjcGq.png

useEffect

useEffect 函數也是一個 React Hook,主要用在第一次載入頁面時抓取資料或執行特定指令,以及針對指定的依賴(或狀態變數)產生變化時,執行指定的程式碼。

宣告方式:

useEffect(()=> {
	要執行的程式碼
}, [依賴]);

注意:如果沒有依賴 → [] ,則只會在頁面第一次渲染時執行一次

import React, { useState, useEffect } from 'react';

useEffect(()=> {
    console.log("The page is loaded!");
}, []);

https://ithelp.ithome.com.tw/upload/images/20220927/20152502SOa4OwlQGi.png

利用 useEffect 監控 State 的狀態

我們可以將狀態變數放入 useEffect 的依賴中,這樣在使用者輸入資料時,我們就能即時判斷字數、內容是否有誤。
https://ithelp.ithome.com.tw/upload/images/20220927/20152502saTFC7KVGi.png

參考資料


上一篇
【Day 11】開始打造頁面
下一篇
【Day 13】好用的程式碼維護工具 - ESLint & Prettier
系列文
MERN Stack + Tailwind CSS - React 小專案實踐計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言