'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 します。