できない.dev

"use client"

別名: use client / use-client / use client ディレクティブ

React Server Components 環境で、そのファイル以降をクライアントコンポーネントとして扱うと宣言するディレクティブ。ファイル先頭に書く。

#nextjs#react#use-client#server-component#app-router

公開:

定義

"use client" は React Server Components 環境で使うディレクティブで、ファイルの先頭(import より前)に書くと、そのモジュールと、そこから import されるモジュールがクライアントコンポーネントとして扱われる。useState / useEffect やイベントハンドラ、ブラウザ API はこの境界の内側でのみ使える。

詳細

App Router では既定で全コンポーネントが Server Component になる。
インタラクティブな UI が必要な箇所だけ "use client" を宣言してクライアント側へ切り替える。
境界はツリー単位で伝播し、client から import された子は明示しなくても client 扱いになる。
文字列リテラルなので、コメントや空行より前の正確な位置に書く必要がある。

よくある誤解

  • 書けば SSR が無効になる: ならない。
    client コンポーネントもサーバーで初回 HTML を生成し、ブラウザで Hydration される。
  • 全ファイルに付けるべき: 不要。
    境界は最小限にし、データ取得は Server Component 側に残すのが定石。

関連

認識されない場合は use client が認識されない、サーバー処理との境界は Server Component を参照。