フロントエンドの定番ライブラリ「React 19」の新機能を紹介──新しいAPI
フロントエンド開発における定番ライブラリ「React」の最新バージョン解説 第4回
ダウンロード サンプルファイル (64.4 KB)
「アクション」に関連した新しいフック(2)
useFormStatusフック:フォーム内のコンポーネントで使える特殊なフック
React 19でフォーム周りのAPIとして、もう一つ追加されたのがuseFormStatusフックです。
このuseFormStatusはこれまで紹介してきたフックと異なり、従来の処理を大幅に改善するようなものではありません。使える場所も少々特殊で、<form>内に配置される子コンポーネント内でのみ使用できます。
実際の使用例として、前回のサンプルをベースに、送信ボタンをコンポーネント化してuseFormStatusを使ってみましょう。なお、useFormStatusフックはreact-domからimportしてください。
// コンポーネント化した送信ボタン
function SubmitButton() {
// useFormStatusで送信中状態と送信中のフォーム値を取得 ... (2)
const { pending, data } = useFormStatus();
const value = data?.get("title");
return (
<button type="submit" disabled={pending}>
{value ? `${value} に更新中` : `更新`}
</button>
);
}
function UpdateTitle({ value, onUpdate }) {
const [error, submitAction, isPending] = useActionState(
// ~中略~
);
return (
<form action={submitAction}>
<input name="title" defaultValue={value} disabled={isPending} />
{/* 必ず<form>内で使う ... (1) */}
<SubmitButton />
{error && <p>{error}</p>}
<div>value: {value}</div>
</form>
);
}
このサンプルを実行すると、送信中にボタンが無効になるだけでなく、ボタンの文字列に送信中の値(data?.get("title"))が表示されます。
SubmitButtonコンポーネントが<form>内で呼び出されていることに注意してください((1))。このような場合にのみuseFormStatusフックが利用できます。
useFormStatusフックは、フォームが送信中であるかどうかを示すpendingのほか、送信中の値をdata(FormData型)で参照できるため、これらの値をpropsで受け渡す必要がなくなります((2))。
注意が必要なのは、このdataはpendingがtrueの間、すなわちフォーム送信中のみ取得可能だということです(それ以外はnull)。あくまでフォーム送信処理中の表示を決定するためだけのものである点を覚えておきましょう。
この記事は参考になりましたか?
- フロントエンド開発における定番ライブラリ「React」の最新バージョン解説連載記事一覧
- この記事の著者
-
WINGSプロジェクト 山田 研二(ヤマダ ケンジ)
株式会社MSEN CTO。高校卒業後、大阪大学の研究所で働きながらプログラミングやWebデザインをはじめ、以後20年以上、Webサイト制作や業務システムの構築を手がけています。フリーソフトもいくつか公開しています。好きな言語はC#とTypeScript、趣味は旅行です。 GitHub アカウント < WINGSプロジェクト について>有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での 登録メンバ は約50名で、現在も執筆メンバを 募集中 。興味のある方は、どしどし応募頂きたい。 著書 、 記事 多数。 RSS X: @WingsPro_info (公式)、 @WingsPro_info/wings (メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
