useSelectedLayoutSegment
useSelectedLayoutSegment
هو hook مكون العميل (Client Component) الذي يسمح لك بقراءة مقطع المسار النشط مستوى واحد أسفل التخطيط الذي يتم استدعاؤه منه.
هو مفيد لواجهة مستخدم التنقل، مثل علامات التبويب داخل التخطيط الرئيسي التي تغير النمط بناءً على مقطع الابن النشط.
'use client'
import { useSelectedLayoutSegment } from 'next/navigation'
export default function ExampleClientComponent() {
const segment = useSelectedLayoutSegment()
return <p>Active segment: {segment}</p>
}
'use client'
import { useSelectedLayoutSegment } from 'next/navigation'
export default function ExampleClientComponent() {
const segment = useSelectedLayoutSegment()
return <p>Active segment: {segment}</p>
}
معلومة مفيدة:
- بما أن
useSelectedLayoutSegment
هو hook مكون العميل (Client Component)، والتخطيطات هي مكونات الخادم (Server Components) افتراضيًا، فإنuseSelectedLayoutSegment
عادةً ما يتم استدعاؤه عبر مكون عميل يتم استيراده إلى التخطيط.useSelectedLayoutSegment
يُرجع فقط المقطع مستوى واحد أسفل. لاسترجاع جميع المقاطع النشطة، راجعuseSelectedLayoutSegments
المعاملات
const segment = useSelectedLayoutSegment(parallelRoutesKey?: string)
useSelectedLayoutSegment
يقبل اختياريًا parallelRoutesKey
، مما يسمح لك بقراءة مقطع المسار النشط داخل تلك الفتحة.
القيم المُرجعة
useSelectedLayoutSegment
يُرجع سلسلة نصية للمقطع النشط أو null
إذا لم يوجد.
على سبيل المثال، بالنظر إلى التخطيطات وعناوين URL أدناه، سيكون المقطع المُرجع:
التخطيط | عنوان URL المزور | المقطع المُرجع |
---|---|---|
app/layout.js | / | null |
app/layout.js | /dashboard | 'dashboard' |
app/dashboard/layout.js | /dashboard | null |
app/dashboard/layout.js | /dashboard/settings | 'settings' |
app/dashboard/layout.js | /dashboard/analytics | 'analytics' |
app/dashboard/layout.js | /dashboard/analytics/monthly | 'analytics' |
أمثلة
إنشاء مكون رابط نشط
يمكنك استخدام useSelectedLayoutSegment
لإنشاء مكون رابط نشط يتغير نمطه بناءً على المقطع النشط. على سبيل المثال، قائمة مشاركات مميزة في الشريط الجانبي لمدونة:
// استيراد مكون العميل إلى تخطيط رئيسي (مكون خادم)
import { BlogNavLink } from './blog-nav-link'
import getFeaturedPosts from './get-featured-posts'
export default async function Layout({
children,
}: {
children: React.ReactNode
}) {
const featuredPosts = await getFeaturedPosts()
return (
<div>
{featuredPosts.map((post) => (
<div key={post.id}>
<BlogNavLink slug={post.slug}>{post.title}</BlogNavLink>
</div>
))}
<div>{children}</div>
</div>
)
}
// استيراد مكون العميل إلى تخطيط رئيسي (مكون خادم)
import { BlogNavLink } from './blog-nav-link'
import getFeaturedPosts from './get-featured-posts'
export default async function Layout({ children }) {
const featuredPosts = await getFeaturedPosts()
return (
<div>
{featuredPosts.map((post) => (
<div key={post.id}>
<BlogNavLink slug={post.slug}>{post.title}</BlogNavLink>
</div>
))}
<div>{children}</div>
</div>
)
}
سجل الإصدارات
الإصدار | التغييرات |
---|---|
v13.0.0 | تم تقديم useSelectedLayoutSegment . |