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で現在時刻を自動更新。