حل مشكلة searchParams في Next.js 15

x32x01
  • بواسطة x32x01 ||
لو اشتغلت قبل كده على Next.js 14 فغالبًا هتفهم إحساسي لما الكود اللي كان شغال تمام بدأ ينهار بعد التحديث لـ Next.js 15 😅

كنت بشتغل على مشروع بـ TypeScript، ومهمتي بسيطة جدًا - أبعت الـ searchParams لصفحة المنتجات.
كل حاجة كانت ماشية زي الفل… لحد ما التحديث الجديد قلب الموازين! 🔥

📛 الكود القديم اللي كان شغال​

الكود ده كان تمام على Next.js 14 👇
JavaScript:
async function ProductsPage({
searchParams,
}: {
searchParams: { layout?: string; search?: string };
}) {
const layout = searchParams.layout || 'grid';
const search = searchParams.search || '';

return (
<> <ProductsContainer layout={layout} search={search} />
</>
);
}
لكن فجأة في الإصدار الجديد 15 ظهر Error والقيم كلها رجعت undefined! 🤯

🔍 فين المشكلة بالضبط؟​

بعد شوية بحث وتجارب، اكتشفت إن السبب إن Next.js 15 غيّر طريقة التعامل مع searchParams.
دلوقتي بقيت Promise بدل Object، يعني لازم نستخدم await علشان نوصل للقيم.

✅ الحل النهائي - الكود الجديد​

الحل بسيط، بس مهم جدًا 👇
JavaScript:
async function ProductsPage({
searchParams,
}: {
searchParams: Promise<{
layout?: string | undefined;
search?: string | undefined;
}>;
}) {
const layout = (await searchParams).layout || 'grid';
const search = (await searchParams).search || '';

return (
<> <ProductsContainer layout={layout} search={search} />
</>
);
}

💡 ملحوظة مهمة:
الفرق الأساسي إننا استخدمنا await searchParams عشان نفك الـ Promise ونتعامل مع القيم الحقيقية.

📚 الدرس المستفاد​

اللي حصل خلاني أتعلم حاجة مهمة جدًا 👇
“Docs مش مجرد كود.. ده كنز بيفهمك ليه الحاجة اتغيرت وبيوفر عليك وقت ومجهود كبير.”

تابع تحديثات الفريمورك أول بأول، لأن التغييرات الصغيرة دي ممكن تعمل فرق ضخم في الكود بتاعك. 🔄
 
مواضيع مشابهة
x32x01
الردود
0
المشاهدات
56
x32x01
x32x01
x32x01
الردود
0
المشاهدات
59
x32x01
x32x01
x32x01
الردود
0
المشاهدات
56
x32x01
x32x01
x32x01
الردود
0
المشاهدات
64
x32x01
x32x01
x32x01
الردود
0
المشاهدات
64
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,340
المشاركات
2,407
الأعضاء
16
آخر عضو مسجل
HcN57
عودة
أعلى