Next.js は、サーバー側のレンダリングとロジックを処理する新しい方法を提供する React サーバー コンポーネントやサーバー アクションなどの強力な機能を組み込むように進化しました。これらの機能は、Web アプリケーションを構築するためのより効率的かつ合理的なアプローチを提供し、パフォーマンスを損なうことなくデータをフェッチし、サーバー上でコンポーネントをレンダリングできるようにします。
このブログ投稿では、実用的な例とコード スニペットを使用して、Next.js で React サーバー コンポーネントとサーバー アクションを使用する方法を説明します。
React Server Components (RSC) は、React によって導入された新しいタイプのコンポーネントで、サーバー上でコンポーネントをレンダリングできるようにします。このアプローチは、クライアントに送信される JavaScript の量を減らし、レンダリング作業をサーバーにオフロードすることでパフォーマンスを向上させるのに役立ちます。
Next.js アプリケーションの React サーバー コンポーネントの基本的な例を次に示します:
// app/components/UserProfile.server.js import { getUserData } from "../lib/api"; export default async function UserProfile() { const user = await getUserData(); return (); }{user.name}
{user.email}
この例では、UserProfile はサーバー上のユーザー データを取得してレンダリングするサーバー コンポーネントです。
サーバー アクションは、ユーザーの操作やその他のイベントに応答してサーバー上で実行される関数です。これにより、フォーム送信や API リクエストなどのサーバー側ロジックを React コンポーネントから直接処理できるようになります。
Next.js アプリケーションでサーバー アクションを使用してフォームの送信を処理する方法は次のとおりです:
// app/actions/submitForm.js import { saveFormData } from "../lib/api"; export async function submitForm(data) { await saveFormData(data); return { success: true }; }
// app/components/ContactForm.js "use client"; import { submitForm } from "../actions/submitForm"; export default function ContactForm() { const handleSubmit = async (event) => { event.preventDefault(); const formData = new FormData(event.target); const result = await submitForm(Object.fromEntries(formData)); if (result.success) { alert("Form submitted successfully!"); } }; return (); }
この例では、submitForm はサーバー上でフォーム データを処理するサーバー アクションであり、ContactForm はこのアクションを使用してフォーム送信を処理するクライアント コンポーネントです。
Next.js の React サーバー コンポーネントとサーバー アクションは、効率的で最新の Web アプリケーションを構築するための強力なツールを提供します。これらの機能を活用すると、パフォーマンスを向上させ、サーバー側のロジックを簡素化し、より応答性の高いユーザー エクスペリエンスを作成できます。
Next.js アプリケーションを構築するときは、Web 開発の最新の進歩を最大限に活用するために、React サーバー コンポーネントとサーバー アクションを組み込むことを検討してください。
コーディングを楽しんでください!
?✨
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3