React Academy · पाठ

React Actions और useActionState

सर्वर और क्लाइंट ऐक्शन परिभाषित करें, फ़ॉर्म सबमिशन संभालें और लंबित स्थितियों को ट्रैक करें।

पाठ 3, कुल 4 में से13 चरण

React Actions और useActionState, CoddyKit पर React Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह React Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्वागत है

इस पाठ में आप React 19 ऐक्शन परिभाषित करेंगे, फ़ॉर्म सबमिशन की स्थिति प्रबंधित करने के लिए useActionState का उपयोग करेंगे और लंबित व त्रुटि स्थितियों को साफ़-सुथरे ढंग से संभालेंगे।

React Actions क्या हैं

ऐक्शन वे असिंक्रोनस फ़ंक्शन हैं जिन्हें आप फ़ॉर्म के `action` प्रॉप (या बटन के `formAction`) में पास करते हैं। React 19 इनके साथ विशेष व्यवहार करता है: यह लंबित स्थिति को ट्रैक करता है, त्रुटियों को संभालता है और Transitions के साथ अपने-आप एकीकृत हो जाता है।

Next.js में Server Actions

Next.js के App Router में किसी फ़ंक्शन को Server Action बनाने के लिए उसके शीर्ष पर 'use server' जोड़ें। फ़ॉर्म सबमिट होने पर React इसे सर्वर पर कॉल करता है — किसी एपीआई रूट की आवश्यकता नहीं होती।
'use server';

export async function createPost(formData) {
  const title = formData.get('title');
  await db.insert(posts).values({ title });
  revalidatePath('/posts');
}

फ़ॉर्म पर ऐक्शन का उपयोग

सर्वर या क्लाइंट ऐक्शन को सीधे फ़ॉर्म के `action` प्रॉप में पास करें। फ़ॉर्म सबमिट होने पर React इसे FormData के साथ कॉल करता है।
import { createPost } from './actions';

export default function NewPostForm() {
  return (
    <form action={createPost}>
      <input name="title" />
      <button type="submit">Create</button>
    </form>
  );
}

useActionState

useActionState किसी ऐक्शन को रैप करके आपको वर्तमान स्थिति (ऐक्शन का अंतिम परिणाम) और एक लंबित बूलियन देता है। रैप किया गया फ़ंक्शन फ़ॉर्म के action में पास किया जाता है।
'use client';
import { useActionState } from 'react';
import { createPost } from './actions';

function NewPostForm() {
  const [state, action, isPending] = useActionState(createPost, null);
  return (
    <form action={action}>
      {state?.error && <p>{state.error}</p>}
      <input name="title" />
      <button disabled={isPending}>Create</button>
    </form>
  );
}

स्थिति लौटाने वाला ऐक्शन

useActionState के साथ उपयोग किए जाने पर सर्वर ऐक्शन को `(prevState, formData)` प्राप्त होता है। success/error जानकारी वाली कोई ऑब्जेक्ट लौटाएँ — यही नई स्थिति बन जाती है।
'use server';

export async function createPost(prevState, formData) {
  const title = formData.get('title')?.toString();
  if (!title) return { error: 'Title is required' };
  await db.insert(posts).values({ title });
  return { success: true };
}

अक्षम सबमिट के लिए isPending

ऐक्शन चलने के दौरान सबमिट बटन को अक्षम करने और लोडिंग संकेतक दिखाने के लिए useActionState से मिले isPending मान का उपयोग करें।
<button type="submit" disabled={isPending}>
  {isPending ? 'Saving...' : 'Save'}
</button>

क्लाइंट ऐक्शन

ऐक्शन का सर्वर-साइड होना आवश्यक नहीं है। क्लाइंट ऐक्शन 'use server' के बिना एक सामान्य असिंक्रोनस फ़ंक्शन होता है। फिर भी इसे useActionState से लंबित और स्थिति प्रबंधन मिलता है।
async function clientAction(prevState, formData) {
  const res = await fetch('/api/post', {
    method: 'POST', body: formData,
  });
  if (!res.ok) return { error: 'Failed' };
  return { success: true };
}

चाइल्ड कंपोनेंट के लिए useFormStatus

गहराई में स्थित सबमिट बटन में, प्रॉप ड्रिलिंग के बिना पैरेंट फ़ॉर्म की लंबित स्थिति पढ़ने के लिए `useFormStatus()` का उपयोग करें।
'use client';
import { useFormStatus } from 'react-dom';

function SubmitButton() {
  const { pending } = useFormStatus();
  return <button disabled={pending}>Submit</button>;
}

प्रोग्रेसिव एन्हांसमेंट

Server Actions के साथ React Actions, JavaScript के बिना भी काम करते हैं (प्रोग्रेसिव एन्हांसमेंट)। ब्राउज़र Next.js हैंडलर को मूल फ़ॉर्म POST भेजता है, जिससे JS लोड होने से पहले ही यह सुविधा काम करने लगती है।

त्वरित जाँच

फ़ॉर्म ऐक्शन चलने के दौरान लोडिंग स्थिति दिखाने के लिए useActionState क्या लौटाता है?

पुनरावृत्ति

React Actions वे असिंक्रोनस फ़ंक्शन हैं जिन्हें फ़ॉर्म action में पास किया जाता है। useActionState किसी ऐक्शन को रैप करके आपको स्थिति, रैप किया हुआ ऐक्शन फ़ंक्शन और isPending देता है। Server Actions में 'use server' जोड़ने पर वे सर्वर पर चलते हैं।

आगे

अगला पाठ: **तुरंत प्रतिक्रिया के लिए useOptimistic** — सर्वर म्यूटेशन के चलने के दौरान आप आशावादी यूआई अपडेट दिखाएँगे।
शुरुआत निःशुल्क

एआई शिक्षक के साथ React सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
88
पाठ
324

अक्सर पूछे जाने वाले प्रश्न

क्या “React Actions और useActionState” पाठ निःशुल्क है?

हाँ—“React Actions और useActionState” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और React Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“React Actions और useActionState” में मैं क्या सीखूँगा?

सर्वर और क्लाइंट ऐक्शन परिभाषित करें, फ़ॉर्म सबमिशन संभालें और लंबित स्थितियों को ट्रैक करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ React Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या React Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर React Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“React Actions और useActionState” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस React Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर React Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. React Server Components की व्याख्या
  2. एसिंक्रोनस संसाधनों के लिए use() हुक
  3. React Actions और useActionState
  4. तुरंत प्रतिक्रिया के लिए useOptimistic
← React Academy पर वापस जाएँ