Reace Hooks その①

Next.js-2.React Hooks編-

Hooksとは

React の Hooks(フック) とは、関数コンポーネントで「状態(state)」や「ライフサイクル」の機能を使うための仕組み です。頻繁に使うHooksの解説をしていきます。

useState

Hooksの一つであるuseStateについて見ていきます。

useStateとは

useStateとはコンポーネントが持つ「動的なデータ」を管理するために使うHooksです。

Next.jsの構築

まず、Next.jsを構築しましょう。構築するフォルダをVScodeで開きターミナルで下記コードを入力します。

npx create-next-app@latest hooks-app

このように表示されていればNext.js構築完了です。

ページ作成

次にapp/pages.jsのHomeコンポーネントの中のreturn内の記述を削除します。

次に、appフォルダにcomponentsフォルダを作成し「useState.js」ファイルを作成、下記コードを記述してください。

"use client";

import { useState } from "react";

export default function Counter() {
    const [count, setCount] = useState(0);

    // アロー関数でイベントハンドラを定義
    const handleClick = () => setCount(count + 1);

    return (
        <div>
            <p>カウント: {count}</p>
            <button onClick={handleClick}>+1</button>
        </div>
    );
}

最後にapp/page.jsでCounterコンポーネントを呼び出します。

import Counter from "./components/useState";

export default function Home() {
  return (
    <Counter />
  );
}

ターミナルで開発サーバーを起動しhttp://localhost:3000/にアクセスすると下のように表示されます。

npm run dev

「+1」をクリックするとカウントの横の数字が増えていきます。

コード解説

app/components/useState.jsのコードを上から解説していきます。

これはuseStateを使うための準備で、このコンポーネントをクライアントコンポーネントとして扱うという宣言です。

use client"; 

詳細の説明は省きますが、Next.jsでは

  • サーバーコンポーネント
  • クライアントコンポーネント

という区別があり、useStateはクライアントコンポーネントでしか使えないというルールがあります。

useStateを使用するためにreactからインポートしています。

import { useState } from "react";

ここでuseStateを使ってcountの状態管理をするための設定をしています。

const [count, setCount] = useState(0);

これは下図のような仕組みに基づきます。

ここでクリックイベント用の関数を定義しています。※イベントハンドラといいます。

const handleClick = () => setCount(count + 1);

この書き方はアロー関数といいます。下図のように書き換え可能です。

アロー関数もよく使うので書き方に慣れておいてください。

最後にbuttonタグをクリックするとhandleClick関数が発火し、setCount関数がcountの値を更新するというJSXの記述になります。

   return (
        <div>
            <p>カウント: {count}</p>
            <button onClick={handleClick}>+1</button>
        </div>
    );

useStateの特徴

  • React の Hooks の 1 つ
  • 状態が更新と自動的に再レンダリング(再描画)される
  • state は直接変更できない更新用関数のsetStateで変更・更新する

次回はuseStateの色々な使い方を見ていきましょう。

コメント

タイトルとURLをコピーしました