ホームページ >ウェブフロントエンド >jsチュートリアル >React 19 の新機能
React アプリの一般的な使用例は、データの変更を実行し、それに応じて状態を更新することです。たとえば、ユーザーが名前を変更するフォームを送信する場合、API リクエストを作成し、その応答を処理します。以前は、保留状態、エラー、オプティミスティック更新、および連続したリクエストを手動で処理する必要がありました。
たとえば、useState:
で保留状態とエラー状態を処理できます。
// Before Actions function UpdateName({}) { const [name, setName] = useState(""); const [error, setError] = useState(null); const [isPending, setIsPending] = useState(false); const handleSubmit = async () => { setIsPending(true); const error = await updateName(name); setIsPending(false); if (error) { setError(error); return; } redirect("/path"); }; return ( <div> <input value={name} onChange={(event) => setName(event.target.value)} /> <button onClick={handleSubmit} disabled={isPending}> Update </button> {error && <p>{error}</p>} </div> ); }
React 19 では、保留状態、エラー、フォーム、オプティミスティック更新を自動的に処理するために、遷移での非同期関数の使用のサポートを追加しています。
たとえば、useTransition を使用して保留状態を処理できます。
// Using pending state from Actions function UpdateName({}) { const [name, setName] = useState(""); const [error, setError] = useState(null); const [isPending, startTransition] = useTransition(); const handleSubmit = () => { startTransition(async () => { const error = await updateName(name); if (error) { setError(error); return; } redirect("/path"); }) }; return ( <div> <input value={name} onChange={(event) => setName(event.target.value)} /> <button onClick={handleSubmit} disabled={isPending}> Update </button> {error && <p>{error}</p>} </div> ); }
非同期遷移は、即座に isPending 状態を true に設定し、非同期リクエストを作成し、遷移後に isPending を false に切り替えます。これにより、データが変更されている間も、現在の UI の応答性と対話性を維持できます。
慣例により、非同期遷移を使用する関数は「アクション」と呼ばれます。
アクションはデータの送信を自動的に管理します:
保留状態: アクションは、リクエストの開始時に開始され、最後の状態更新がコミットされると自動的にリセットされる保留状態を提供します。
オプティミスティック更新: アクションは新しい useOptimistic フックをサポートしているため、リクエストの送信中にユーザーに即座にフィードバックを表示できます。
エラー処理: アクションはエラー処理を提供するため、リクエストが失敗したときにエラー境界を表示し、オプティミスティックな更新を元の値に自動的に戻すことができます。
フォーム: <フォーム>要素は、action および formAction props への関数の受け渡しをサポートするようになりました。関数をアクション プロパティに渡すと、デフォルトでアクションが使用され、送信後にフォームが自動的にリセットされます。
アクションを基盤とする React 19 では、オプティミスティックな更新を管理する useOptimistic と、アクションの一般的なケースを処理するための新しいフック React.useActionState が導入されています。 React-dom では