use clientとは
クライアントサイドで動作する必要があるコンポーネントを指定するために使います。
これにより、クライアントサイドでのインタラクティブな操作が可能になります。
- 補足(インタラクティブとは)
1.React Hooks関数コンポーネントで状態管理やライフサイクルイベントを扱うための機能で、useStateやuseEffectなどです。
2.イベントハンドラー
イベントハンドラーは、ユーザーの操(クリック、入力、フォームの送信など)に応じて特定の処理を実行するための関数)
です。
小学生にもわかるように解説
家でゲームをしていて、ゲーム機がある部屋(サーバールーム)と、ゲームをしている部屋(クライアントルーム)があります。
-
サーバールーム(Server Room)
ここにはたくさんのデータやゲームのルールが保存。
部屋の中の人(プログラム)は、色々な準備をして、データをクライアントルームに送ります。 -
クライアントルーム(Client Room)
ここで実際にゲームを遊びます。
ゲーム機やコントローラーがあり、ボタンを押したり、キャラクターを動かしたりします。
ゲームの準備ができたら、データをクライアントルームに送り、
クライアントルームで、あなたがゲーム機のボタンを押したりしてプレイします。
use client
は、「この部分はクライアントルームで遊ぶためのものだよ!」と教えてあげるラベルのようなものです。
例えば、あなたがボタンを押すとキャラクターがジャンプするプログラムがあります。このプログラムは、クライアントルームで動かさないといけません。そこで、「use client」と書いておくと、「このプログラムはクライアントルームで動かすよ!」とわかるようになります。
実際の例
ログインページではuseclientを使いました。
"use client"
import { Input } from "../../components//atoms/Input";
import { PrimaryBtn } from "../../components/atoms/PrimaryBtn";
export const Login = () => {
return (
<div className="w-[500px] bg-white rounded-lg shadow-lg py-10">
<form className="flex flex-col justify-center items-center gap-10">
<h1 className="text-3xl text-lime-800 font-bold text-center">
ログイン
</h1>
<div className="w-[80%]">
<Input
type="text"
placeholder="email"
/>
</div>
<div className="w-[80%]">
<Input
type="password"
placeholder="password"
/>
</div>
<PrimaryBtn onClick={() => null}>ログイン</PrimaryBtn>
</form>
</div>
);
};
export default Login;
ボタンに関するコンポーネントでも使いました。
"use client"
import { ReactNode } from 'react'
type PropsType = {
onClick: () => void
children:ReactNode
}
export const PrimaryBtn = ({ onClick,children }: PropsType) => {
return (
<button className="bg-lime-800 text-white p-4 text-lg rounded-lg" onClick={onClick}>
{ children }
</button>
)
}
export default PrimaryBtn
使用ケース
調べたら以下のケースでよく使われるみたいです。
1.認証
認証関連の機能は、ユーザーの入力、セッション管理、API呼び出しなど、クライアントサイドで処理する必要がある時
ex)
ログインフォームやユーザープロフィールの編集など
2.フォームの入力とバリデーション
ユーザーが入力するフォームは、クライアントサイドでのインタラクティブな操作が必要
ex)
入力値のバリデーションや動的なフィードバックを行う場合
3.状態管理
コンポーネント内部で状態を持つ時(ex useStateやuseReducerを使う時)
4.イベントハンドリング
クリックイベントやフォームの送信など、ユーザーの操作に応じて処理をする時
注意
Reactではuse clientは使いません。
理由はReactには、SSRの仕組みなどがないからです。
資料
ChaGpt参照