useSelectedLayoutSegment
useSelectedLayoutSegment
هو خطاف لمكون العميل (Client Component) يسمح لك بقراءة مقطع المسار النشط بمستوى واحد أسفل التخطيط (Layout) الذي يتم استدعاؤه منه.
يكون مفيدًا لواجهة المستخدم الخاصة بالتنقل، مثل علامات التبويب داخل التخطيط الرئيسي التي تغير النمط بناءً على مقطع الابن النشط.
'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
هو خطاف لمكون العميل (Client Component)، وأن التخطيطات (Layouts) هي مكونات خادم (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 . |