page.js در Next.js — ساخت صفحات پویا با پارامترهای مسیر و جستجو

فایل page.js در Next.js برای تعریف رابط کاربری منحصر به‌فرد هر مسیر استفاده می‌شود. این فایل می‌تواند پارامترهای مسیر (params) و پارامترهای جستجو (searchParams) را دریافت کند و به‌صورت پیش‌فرض یک Server Component است. این مقاله نحوهٔ استفاده از page.js، مدیریت پارامترها، و ساخت صفحات پویا را آموزش می‌دهد.

page.jsparamssearchParamsClient Component

~2 دقیقه مطالعه · آخرین به‌روزرسانی ۷ آبان ۱۴۰۴

۱. تعریف صفحه با page.js


برای ساخت یک صفحه، کافیست کامپوننتی را به‌صورت default export از فایل page.js یا page.tsx ارائه دهید.

// app/blog/[slug]/page.tsx
export default function Page({ params, searchParams }) {
  return <h1>My Page</h1>
}

۲. پارامترهای مسیر (params)


پارامترهای مسیر به‌صورت Promise ارسال می‌شوند و باید با async/await یا use() خوانده شوند.

// app/shop/[slug]/page.tsx
export default async function Page({ params }) {
  const { slug } = await params
  return <h1>Product: {slug}</h1>
}

۳. پارامترهای جستجو (searchParams)


پارامترهای جستجو از query string استخراج می‌شوند و به‌صورت Promise ارسال می‌شوند.

// app/shop/page.tsx
export default async function Page({ searchParams }) {
  const { page = '1', sort = 'asc', query = '' } = await searchParams
  return (
    <div>
      <h1>Product Listing</h1>
      <p>Search query: {query}</p>
      <p>Current page: {page}</p>
      <p>Sort order: {sort}</p>
    </div>
  )
}

۴. استفاده در کامپوننت‌های کلاینتی


در Client Componentها، چون نمی‌توان از async استفاده کرد، باید از use() برای خواندن params و searchParams استفاده شود.

'use client'
import { use } from 'react'

export default function Page({ params, searchParams }) {
  const { slug } = use(params)
  const { query } = use(searchParams)
}

۵. استفاده از PageProps برای تایپ دقیق


با استفاده از PageProps می‌توان تایپ دقیق‌تری برای params و searchParams داشت.

// app/blog/[slug]/page.tsx
export default async function Page(props: PageProps<'/blog/[slug]'>) {
  const { slug } = await props.params
  const query = await props.searchParams
  return <h1>Blog Post: {slug}</h1>
}

۶. نکات مهم


  • فایل page.js همیشه برگ نهایی (leaf) در ساختار مسیر است
  • برای دسترسی عمومی به یک segment، وجود page.js الزامی است
  • به‌صورت پیش‌فرض Server Component است، اما می‌توان آن را با 'use client' به Client Component تبدیل کرد
  • استفاده از searchParams باعث فعال شدن رندر داینامیک در زمان درخواست می‌شود

جمع‌بندی


فایل page.js در Next.js امکان ساخت صفحات پویا، قابل فیلتر، و قابل شخصی‌سازی را فراهم می‌کند. با استفاده از params و searchParams می‌توان محتوای مسیر را بر اساس URL و query string مدیریت کرد و تجربه‌ای سریع و واکنش‌گرا برای کاربر ساخت.


نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

مسیریابی پیشرفته و هوک‌های عملکرد در Next.js — راهنمای توسعه‌دهنده برای App Router

Next.js مجموعه‌ای غنی از هوک‌های کلاینت و ابزارهای کش و ناوبری را در اختیار توسعه‌دهندگان قرار می‌دهد. از خواندن پارامترهای مسیر تا گزارش Web Vitals و مدیریت کش، این مقاله مهم‌ترین ابزارهای App Router را با مثال‌های کاربردی معرفی می‌کند.

ادامه

مدیریت احراز هویت و کش در Next.js — راهنمای توسعه‌دهنده برای امنیت و عملکرد پویا

Next.js با معرفی قابلیت‌های آزمایشی جدید، امکان کنترل دقیق‌تر دسترسی و کش داده‌ها را فراهم کرده است. تابع unauthorized برای مدیریت خطای 401 و هدایت کاربران به صفحه ورود، unstable_cache برای کش هوشمند عملیات سنگین، updateTag برای بازسازی آنی داده‌ها، و useLinkStatus برای نمایش وضعیت ناوبری استفاده می‌شوند. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات مهم بررسی می‌کند.

ادامه

redirect و refresh در Next.js — ریدایرکت‌های هوشمند و تازه‌سازی مسیر در Server Actions

تابع redirect در Next.js برای هدایت کاربر به مسیر جدید استفاده می‌شود و بسته به نوع استفاده، پاسخ HTTP با وضعیت 307 یا 303 ارسال می‌کند. این تابع در Server Components، Client Components، Route Handlers و Server Actions قابل استفاده است. تابع refresh نیز برای تازه‌سازی مسیر کلاینت از درون Server Action استفاده می‌شود. این مقاله نحوه استفاده از هر دو تابع را با مثال‌های کاربردی و نکات مهم توضیح می‌دهد.

ادامه

Next.js با معرفی NextRequest و NextResponse، APIهای Request و Response مرورگر را گسترش داده و ابزارهای قدرتمندی برای مدیریت کوکی‌ها، هدرها، ریدایرکت‌ها، بازنویسی مسیرها و پاسخ‌های JSON فراهم کرده است. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات امنیتی توضیح می‌دهد.

Next.js با معرفی NextRequest و NextResponse، APIهای Request و Response مرورگر را گسترش داده و ابزارهای قدرتمندی برای مدیریت کوکی‌ها، هدرها، ریدایرکت‌ها، بازنویسی مسیرها و پاسخ‌های JSON فراهم کرده است. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات امنیتی توضیح می‌دهد.

ادامه

headers، ImageResponse، notFound و permanentRedirect در Next.js — مدیریت درخواست‌ها، تولید تصویر، خطا و ریدایرکت

Next.js ابزارهای قدرتمندی برای مدیریت درخواست‌ها و پاسخ‌ها در کامپوننت‌های سروری فراهم کرده است. تابع headers برای خواندن هدرهای HTTP ورودی، ImageResponse برای تولید تصاویر داینامیک، notFound برای نمایش صفحه خطای 404، و permanentRedirect برای ریدایرکت دائمی کاربران استفاده می‌شوند. این مقاله نحوه استفاده از هر یک را با مثال‌های کاربردی توضیح می‌دهد.

ادامه

راهنمای کامل استفاده از metadata و generateMetadata در Next.js

در نسخه‌های مدرن Next.js، مدیریت metadata صفحات بسیار قدرتمندتر و ساده‌تر شده است. metadata به‌صورت خودکار در تگ <head> صفحات تزریق می‌شود و نقش مهمی در SEO، اشتراک‌گذاری اجتماعی و تجربه کاربری دارد. این مقاله دو روش اصلی تعریف metadata را بررسی می‌کند: استفاده از آبجکت ثابت metadata و تابع داینامیک generateMetadata.

ادامه