Next.js Data Fetching جلب البيانات في Next.js

آخر تحديث: 2026-11-03

Next.js Data Fetching جلب البيانات في Next.js

في مكوّن خادمي من Next.js تستطيع انتظار fetch مباشرةً، ويتحكّم next.revalidate باستراتيجية التخزين المؤقت: فـ SSG و ISR و SSR جميعها تُعبَّر عبر ذات الواجهة. والتخزين المؤقت هو السلوك الافتراضي، لذا فهم الاستراتيجيات هو ما يتيح لك الموازنة بين السرعة وحداثة البيانات دون التضحية بأي منهما.

المجموعةالمنظومة والتقدّم
النوعنمط
منذ الإصدارNext.js 13.4+ (استقرار موجّه App)؛ و fetch لم تعد مخزَّنة مؤقتًا افتراضيًا منذ 15

ℹ️ ملاحظة يحوّل المحرّر JSX إلى JavaScript ويعرض الواجهة الحقيقية داخل بيئة معزولة؛ تُركَّب المكوّنات تلقائياً دون استدعاء render يدوي.

📝 الصيغة

// Fetch directly inside a server component (no useEffect needed)
const res = await fetch('https://api.example.com/posts', {
  next: { revalidate: 60 }   // ISR: cached for 60 seconds
})
const posts = await res.json()

// Other strategies:
// next: { revalidate: 0 }   → SSR: fetched fresh on every request
// cache: 'no-store'         → no caching at all (same as SSR)
// no options at all         → SSG: fetched once at build time
// next: { tags: ['posts'] } → tagged, so revalidateTag can invalidate it precisely

⚙️ المعاملات

next.revalidateعدد الثواني التي يعيشها التخزين المؤقت: 0 يجلب من جديد في كل طلب (SSR)، وتركه بلا ضبط يجلب مرة واحدة وقت البناء (SSG)، و N يُعيد توليد التخزين في الخلفية كل N ثانية (ISR).
cache: 'no-store'يُعطّل التخزين المؤقت تمامًا، وهو ما يكافئ التصيير الديناميكي ويناسب البيانات الآنية بشدّة.

القيمة المرجعة:لا قيمة مرتجعة — تُجلَب البيانات على الخادم؛ والاستراتيجيات موصوفة في بناء الجملة والمثال.

▶ مثال

المثال يعمل مباشرة: يُعرض تلقائياً عند التوسيع وتظهر التعديلات فوراً.

الناتج:

محاكاة: انقر أزرار SSG / ISR / SSR لتبديل الاستراتيجيات؛ وتعرض اللوحة السفلية خيار revalidate المطابق وحداثة البيانات (لقطة وقت البناء، أو أقدم بـ 60 ثانية على الأكثر، أو مباشرة) وملاحظة موجزة عن حالة الاستخدام، ما يسهّل مقارنة المقايضة بين السرعة والحداثة.

💡 النقاط الأساسية

⚠️ تحذير منذ Next.js 15 لم تعد fetch مخزَّنة مؤقتًا افتراضيًا: للحصول على SSG أو ISR يجب كتابة next.revalidate صراحةً، فالسلوك يختلف عن الإصدار 14.
💡 نصيحة وسِم طلباتك بـ fetch(url, { next: { tags: ['posts'] } }) ونادِ revalidateTag('posts') بعد تغيّر البيانات لإبطال إدخالات التخزين الصحيحة تمامًا بدل إعادة توليد الموقع كله.
ℹ️ ملاحظة لا تزال المكوّنات العميلية تجلب عبر useEffect أو TanStack Query؛ ويجب ألا يعيش منطق الجلب الخادمي في ملف موسوم بـ 'use client'.
المزيد من الحالات قريباً.

📚 دروس ذات صلة

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

س كيف أجلب البيانات في مكوّن خادمي؟
ج فقط انتظر fetch(...) داخل مكوّن async — بلا useEffect وبلا إدارة حالة. ويحدث الطلب على الخادم وقت البناء أو الطلب، فلا شيء إضافي يُرسَل إلى المتصفح.
س كيف أختار بين SSG و ISR و SSR؟
ج استخدم SSG للمحتوى الذي نادرًا ما يتغيّر (التوثيق، تدوينات المدوّنة)، و ISR للبيانات التي تحتاج تحديثًا منتظمًا (صفحات المنتجات، القوائم)، و SSR للبيانات الشخصية تمامًا أو الآنية صراحةً. ويمكن لصفحات مختلفة في موقع واحد خلطها بحرّية.
س هل تستطيع مكوّن عميل الجلب بهذه الطريقة؟
ج لا. خيار next.revalidate لا يسري إلا على الخادم؛ وفي مكوّن عميل استخدم useEffect أو SWR أو TanStack Query وتولّ موازنة حالات التحميل والخطأ بنفسك.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%