0Pricing
React Academy · درس

‏useOptimistic للاستجابة الفورية

اعرض تحديثات تفاؤلية للواجهة أثناء تنفيذ طفرة على الخادم باستخدام useOptimistic.

‏useOptimistic للاستجابة الفورية درس مجاني في React Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

مرحبًا

في هذا الدرس، ستستخدمون الخطاف useOptimistic في React 19 لعرض تغييرات متفائلة وفورية في الواجهة أثناء تنفيذ تغيير على الخادم، مع التراجع التلقائي عند الفشل.

ما المقصود بالواجهة المتفائلة؟

تعني الواجهة المتفائلة افتراض نجاح تغيير الخادم وتحديث الواجهة فورًا من دون انتظار استجابة الخادم. وإذا فشل التغيير، تعودون إلى الحالة السابقة.

أساسيات useOptimistic

تقبل useOptimistic الحالة الفعلية ودالة لتحديثها. وتُعيد الحالة المتفائلة ودالة لتطبيق التحديثات المتفائلة.
'use client';
import { useOptimistic } from 'react';

const [optimisticLikes, addOptimisticLike] = useOptimistic(
  likes,                      // actual state from server
  (state, newLike) => [...state, newLike] // how to apply optimistic update
);

مثال على زر الإعجاب

عندما ينقر المستخدم على Like، اعرضوا الإعجاب الجديد فورًا في الواجهة باستخدام addOptimisticLike، ثم أرسلوا الطلب الفعلي. وإذا فشل الطلب، تعود الحالة المتفائلة تلقائيًا إلى الحالة الفعلية.
async function handleLike() {
  addOptimisticLike({ id: Date.now(), user: currentUser });
  await likePost(postId); // server action
}

مكان وجود الحالة المتفائلة

تعرض optimisticLikes القيمة المتفائلة أثناء الانتقال. وبمجرد أن يستجيب الخادم وتتحدّث حالة `likes` الفعلية (من خلال إعادة التحقق)، تزامن useOptimistic الحالة تلقائيًا مع الحالة الفعلية.

مؤشر انتظار للعناصر المتفائلة

ميّزوا العناصر المتفائلة بصريًا (مثلًا بجعلها باهتة قليلًا) حتى يعرف المستخدمون أنها قيد الانتظار. يمكنكم إضافة علامة `pending: true` إلى التحديث المتفائل وتنسيقها وفقًا لذلك.
const [optimisticMessages, addOptimistic] = useOptimistic(
  messages,
  (state, msg) => [...state, { ...msg, pending: true }]
);

// Render
{optimisticMessages.map(m => (
  <div key={m.id} style={{ opacity: m.pending ? 0.6 : 1 }}>{m.text}</div>
))}

الاستخدام داخل انتقال

لا تعمل useOptimistic إلا داخل React Transition (باستخدام startTransition أو useTransition). وعند استخدام Server Actions مع React 19، تتم معالجة ذلك تلقائيًا.
'use client';
import { startTransition } from 'react';

const handleSubmit = (data) => {
  startTransition(async () => {
    addOptimistic(data);
    await serverAction(data);
  });
};

مثال على إرسال رسالة في دردشة

اعرضوا الرسالة المرسلة فورًا في قائمة الدردشة أثناء حفظ الخادم لها. تظهر الرسالة مباشرةً بحالة «جارٍ الإرسال...»، ثم تتحول إلى «أُرسلت» عندما يؤكد الخادم حفظها.

سلوك التراجع عند الخطأ

إذا فشل إجراء الخادم (بإلقاء خطأ أو رفضه)، تتخلّص useOptimistic تلقائيًا من القيمة المتفائلة وتعود إلى آخر حالة فعلية. لا تحتاجون إلى تنفيذ التراجع يدويًا.

useOptimistic مقابل التحديثات المتفائلة اليدوية

قبل useOptimistic، كنتم تديرون متغيري حالة (الفعلية + المتفائلة) وتنفّذون التراجع يدويًا داخل كتلة catch. تختصر useOptimistic ذلك في خطاف واحد مع تراجع تلقائي.

تحقّق سريع

ماذا يحدث للحالة المتفائلة إذا فشل إجراء الخادم الذي أطلقها؟

مراجعة

تُعيد useOptimistic(actualState, updater) القيمة [optimisticState, addOptimistic]. استدعوا addOptimistic قبل إجراء الخادم للحصول على تغذية راجعة فورية. تتراجع React تلقائيًا إذا فشل الإجراء. ويعمل ذلك داخل React Transitions.

اكتمل المقرر

تهانينا! لقد أكملتم **Server Components وميزات React 19**. أصبحتم الآن تفهمون RSCs والخطاف use() وActions وuseActionState وuseOptimistic لتطوير تطبيقات React الحديثة.

الأسئلة الشائعة

هل درس «‏useOptimistic للاستجابة الفورية» مجاني؟

نعم — نص درس «‏useOptimistic للاستجابة الفورية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «‏useOptimistic للاستجابة الفورية»؟

اعرض تحديثات تفاؤلية للواجهة أثناء تنفيذ طفرة على الخادم باستخدام useOptimistic. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «‏useOptimistic للاستجابة الفورية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. شرح مكوّنات React على الخادم
  2. ‏use() للموارد غير المتزامنة
  3. إجراءات React وuseActionState
  4. ‏useOptimistic للاستجابة الفورية
← العودة إلى React Academy