الفرق بين المراجعتين لصفحة: «Next.js/custom app»

من موسوعة حسوب
ط مراجعة
طلا ملخص تعديل
 
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:التطبيقات المخصصة باستخدام المكوّن <code>App</code>}}</noinclude>
<noinclude>{{DISPLAYTITLE:استخدام تطبيق مخصص App في Next.js}}</noinclude>
'''ملاحظة''': بدأت Next.js في الإصدار 13 دعم استخدام المجلد <code>/app</code> كنسخة تجريبية، ويمكن باستعمال المجلد ذاك دعم التخطيطات layouts والوجهات المتداخلة nested routes واستعمال مكونات خادم Server افتراضيًا، كما يمكنك جلب بيانات تُستعمل في كل تطبيقك.
'''ملاحظة''': بدأت Next.js في الإصدار 13 دعم استخدام المجلد <code>/app</code> كنسخة تجريبية، ويمكن باستعمال المجلد ذاك دعم التخطيطات layouts والوجهات المتداخلة nested routes واستعمال مكونات خادم Server افتراضيًا، كما يمكنك جلب بيانات تُستعمل في كل تطبيقك.


سطر 40: سطر 40:
== دعم TypeScript ==
== دعم TypeScript ==
إن كنت تستخدم TypeScript، اطلع على [[Next.js/typescript#.D8.A7.D8.B3.D8.AA.D8.AE.D8.AF.D8.A7.D9.85%20.D8.A7.D9.84.D8.A3.D9.86.D9.88.D8.A7.D8.B9%20.D9.85.D8.B9%20.D8.A7.D9.84.D8.AA.D8.B7.D8.A8.D9.8A.D9.82.D8.A7.D8.AA%20.D8.A7.D9.84.D9.85.D8.AE.D8.B5.D8.B5.D8.A9%20.D9.81.D9.8A%20Next.js|توثيق استخدام TypeScript]] في Next.js.
إن كنت تستخدم TypeScript، اطلع على [[Next.js/typescript#.D8.A7.D8.B3.D8.AA.D8.AE.D8.AF.D8.A7.D9.85%20.D8.A7.D9.84.D8.A3.D9.86.D9.88.D8.A7.D8.B9%20.D9.85.D8.B9%20.D8.A7.D9.84.D8.AA.D8.B7.D8.A8.D9.8A.D9.82.D8.A7.D8.AA%20.D8.A7.D9.84.D9.85.D8.AE.D8.B5.D8.B5.D8.A9%20.D9.81.D9.8A%20Next.js|توثيق استخدام TypeScript]] في Next.js.
== اقرأ أيضًا ==


* [[Next.js/automatic static optimization|التحسين التلقائي الساكن في Next.js]]
* [[Next.js/custom error page|صفحات مخصصة لعرض الأخطاء]]
* [[Next.js/custom document|المستندات المخصصة في Next.js باستخدام المكوّن <code>document</code>]]
* [[Next.js/custom server|استخدام خادم مخصص في Next.js]]
== المصادر ==
== المصادر ==


* الصفحة [https://nextjs.org/docs/advanced-features/custom-app Custom App] من توثيق Next.js الرسمي.
* الصفحة [https://nextjs.org/docs/advanced-features/custom-app Custom App] من توثيق Next.js الرسمي.


== اقرأ أيضًا ==


* [[Next.js/automatic static optimization|التحسين التلقائي الساكن في Next.js]]
[[تصنيف:Next.js|{{SUBPAGENAME}}]]
* [[Next.js/custom error page|صفحات مخصصة لعرض الأخطاء]]
[[تصنيف:Next.js Advanced Features|{{SUBPAGENAME}}]]
* [[Next.js/custom document|المستندات المخصصة في Next.js باستخدام المكوّن <code>document</code>]]
* [[Next.js/custom server|استخدام خادم مخصص في Next.js]]

المراجعة الحالية بتاريخ 17:08، 3 يناير 2023

ملاحظة: بدأت Next.js في الإصدار 13 دعم استخدام المجلد /app كنسخة تجريبية، ويمكن باستعمال المجلد ذاك دعم التخطيطات layouts والوجهات المتداخلة nested routes واستعمال مكونات خادم Server افتراضيًا، كما يمكنك جلب بيانات تُستعمل في كل تطبيقك.

تستخدم Next.js المكوّن App لتهيئة الصفحات، وتتيح لك تخصيص هذا المكوّن والتحكم بتهيئة الصفحات كما تريد، مما يجعلك قادرًا على تنفيذ أشياء مفيدة حقًا مثل:

  • المحافظة على التخطيط عند التنقل بين الصفحات.
  • المحافظة على حالة عند التنقل بين الصفحات.
  • التعامل المخصص مع الأخطاء باستخدام componentDidCatch.
  • الدفع ببيانات إضافية إلى الصفحات.
  • إضافة تنسيقات CSS عامة.

لإلغاء المكوّن الافتراضي App، أنشئ الملف pages/_app.js/. كما يلي:

// import App from 'next/app'

function MyApp({ Component, pageProps }) {
  return <Component {...pageProps} />
}
// أزل إشارة التعليق عن هذه الطريقة فقط إن احتاجت كل صفحة معلومات محجوبة
// فسيعطل ذلك القدرة على التحسين التلقائي الساكن ويجعل كل صفح من صفحات 
// التطبيق مصيرة من جانب الخادم
// MyApp.getInitialProps = async (appContext) => {
//   // calls page's `getInitialProps` and fills `appProps.pageProps`
//   const appProps = await App.getInitialProps(appContext);
//
//   return { ...appProps }
// }

export default MyApp

يُمثِّل الكائن Component الصفحة المعروضة (المفعّلة) page، وعندما تنتقل بين صفحات التطبيق سيتغير Component إلى الصفحة الجديدة، وبالتالي فإن أية خاصيات ترسلها إليه ستستقبلها الصفحة. ويضم الكائن pageProps الخاصيات الأساسية التي تُحمَّل مسبقًا لكل صفحة من صفحات التطبيق باستخدام إحدى طرق إحضار البيانات، وإن لم تكن هناك بيانات، فسيكون الكائن فارغًا.

يتلقى الكائن App.getInitialProps وسيطًا واحدًا يُدعى context.ctx، وهو كائن له نفس مجموعة الخاصيات الكائن context في getInitialProps.

محاذير

  • إن أضفت المكوّن App وتطبيقك يعمل، ستُضطر إلى إعادة تشغيل خادم التطوير في حال لم يكن الملف pages/_app.js موجودًا.
  • يُعطِّل إضافة دالة getInitialProps مخصصة إلى المكوّن App التحسين التلقائي الساكن في الصفحات التي لا تضم شيفرة التوليد الساكن.
  • عليك إضافة السطر البرمجي "import App from "next/app" واستدعاء الدالة App.getInitialProps(appContext) ضمن الدالة getInitialProps ودمج الكائن المُعاد ضمن القيمة المعادة إن قررت إضافة getInitialProps إلى المكوّن App.
  • لا يدعم المكوّن App حاليًا طرق إحضار البيانات في Next.js مثل getStaticProps أو getServerSideProps.

دعم TypeScript

إن كنت تستخدم TypeScript، اطلع على توثيق استخدام TypeScript في Next.js.

اقرأ أيضًا

المصادر

  • الصفحة Custom App من توثيق Next.js الرسمي.