IT-Q

'use server' を付けた関数は、何になりますか。

クライアントから呼べるサーバー側の関数になります。非同期関数にしか付けられません。呼び出しが必ずネットワーク越しになるためです。use client と対になる宣言ではありません。

面接官が見ているのは'use client' との対を誤解していないか。名前が似ているだけで役割が違う。

よくある答えと、面談でどう見られるか

  • クライアントから呼び出せるサーバー側の関数(Server Function)になる
    非同期関数にしか付けられません。呼び出しがネットワーク越しになるためです。
  • そのコンポーネントが Server Component になる
    Server Component は既定なので宣言は不要です。役割が違います。
  • 'use client' と対になっていて、サーバー側で動かす宣言
    対ではありません。片方は境界の宣言、もう片方はサーバー関数の公開です。
  • サーバー側の関数になる。フォームの action に渡して更新処理に使う
    更新(ミューテーション)向けです。データ取得には推奨されていません。

模範解答

クライアントから呼び出せるサーバー側の関数(Server Function)になります。非同期関数にしか付けられません。呼び出しが必ずネットワーク越しになるためです。

'use client' と対だと誤解されがちですが、役割が違います。'use client' は「ここから先はクライアント側のモジュール」という境界の宣言、'use server' は「この関数はサーバーで実行され、クライアントから呼べる」という宣言です。Server Component は既定の状態なので、宣言そのものが要りません。

用途は更新です。React の公式も「サーバー側の状態を更新するために設計されており、データ取得には推奨しない」と明記しています。取得は Server Component で await します。