Reactを使っていると必ず出てくるのがuseState
とuseEffect
。
この2つがわかると、「静的な画面」から「動きのあるUI」へ一気にステップアップできる。
useState
はコンポーネント内で状態(=変化する値)を管理したいときに使う。
カウンター、フォーム入力、チェックボックスのオンオフ…全部これ。
tsx
const [count, setCount] = useState<number>(0);
count
:今の状態の値(ここでは数値)setCount
:状態を更新する関数0
:状態の初期値この構文で状態を「宣言」できる。
tsx
const handleClick = () => {
setCount(count + 1);
};
setCount
を呼べば、Reactは「状態が変わった」とみなして自動的に再レンダリングしてくれる。
🔁 変更→再レンダリング→表示更新、全部Reactがやってくれる。
useEffect
は「DOMの更新以外の処理」(=副作用)を扱うときに使う。
例:タイマー、API通信、イベントリスナーの登録など。
tsx
useEffect(() => {
const timer = setInterval(() => {
setCurrentTime(new Date());
}, 1000);
return () => {
clearInterval(timer);
};
}, []);
この例だと:
[]
:初回マウント時のみ実行[value]
:value
が変わるたびに実行tsx
const [name, setName] = useState("");
useEffect(() => {
console.log("名前が変わった:", name);
}, [name]);
tsx
useEffect(() => {
fetch("/api/data").then(...);
}, []);
tsx
const [count, setCount] = useState<number>(0);
React.FC
を使って関数コンポーネントの型も定義できるtsx
const App: React.FC = () => {
// ...
};
👇 サンプルアプリ
useState
でカウント管理、useEffect
で現在時刻を自動更新。