Reactはバージョン16.8からHooksを導入し、functionコンポーネントでstateなどのReact機能を扱えるようになりました。クラスコンポーネントは引き続き利用可能ですが、基本的には不要です。
Hooksを使うと、functionコンポーネントでstate管理やライフサイクルメソッドなどを扱うことができます。
例(useState
使用)
お好みの料理を選択するコンポーネントです:
import React, { useState } from "react";
import ReactDOM from "react-dom/client";
function FavoriteFood() {
const [food, setFood] = useState("pizza");
return (
<>
<h1>My favorite food is {food}!</h1>
<button onClick={() => setFood("pizza")}>Pizza</button>
<button onClick={() => setFood("sushi")}>Sushi</button>
<button onClick={() => setFood("tacos")}>Tacos</button>
<button onClick={() => setFood("pasta")}>Pasta</button>
</>
);
}
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<FavoriteFood />);
react
からHooksをインポートしてください。上記ではuseState
がfood
というstateを管理しています。
HooksはReactのfunctionコンポーネント内でのみ呼び出す
コンポーネントの先頭で呼び出し、ループや条件分岐、ネストされた関数の中では呼ばない
クラスコンポーネントではHooksは使えない
複数のコンポーネントで共通のstatefulなロジックが必要な場合は、カスタムHooksを作成できます。
このプロジェクトの完全なソースコードはGitHubで利用可能です。