useSelectedLayoutSegment
useSelectedLayoutSegment çağrıldığı Düzenin bir seviye altındaki aktif rota segmentini okumanızı sağlayan bir İstemci Bileşeni kancasıdır.
Etkin alt segmente bağlı olarak stil değiştiren bir üst düzen içindeki sekmeler gibi gezinme kullanıcı arayüzü için kullanışlıdır.
'use client'
import { useSelectedLayoutSegment } from 'next/navigation'
export default function ExampleClientComponent() {
const segment = useSelectedLayoutSegment()
return <p>Active segment: {segment}</p>
}Bildiğim iyi oldu:
useSelectedLayoutSegmentbir İstemci Bileşeni kancası olduğundan ve Düzenler varsayılan olarak Sunucu Bileşenleri olduğundan,useSelectedLayoutSegmentgenellikle bir Düzene içe aktarılan bir İstemci Bileşeni aracılığıyla çağrılır.useSelectedLayoutSegmentyalnızca segmenti bir seviye aşağı döndürür. Tüm etkin segmentleri döndürmek için bkz.useSelectedLayoutSegments
Parameters
const segment = useSelectedLayoutSegment(parallelRoutesKey?: string)useSelectedLayoutSegment isteğe bağlı olarak bir parallelRoutesKeyBu, o yuvadaki aktif rota segmentini okumanızı sağlar.
Returns
useSelectedLayoutSegment etkin segmentin bir dizesini veya yoksa null adresini döndürür.
Örneğin, aşağıdaki Düzenler ve URL'ler göz önüne alındığında, döndürülen segment şu şekilde olacaktır:
| Layout | Visited URL | Returned Segment |
|---|---|---|
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' |
Examples
Creating an active link component
Etkin segmente bağlı olarak stil değiştiren etkin bir bağlantı bileşeni oluşturmak için useSelectedLayoutSegment adresini kullanabilirsiniz. Örneğin, bir blogun kenar çubuğundaki öne çıkan yazılar listesi:
'use client'
import Link from 'next/link'
import { useSelectedLayoutSegment } from 'next/navigation'
// This *client* component will be imported into a blog layout
export default function BlogNavLink({
slug,
children,
}: {
slug: string
children: React.ReactNode
}) {
// Navigating to `/blog/hello-world` will return 'hello-world'
// for the selected layout segment
const segment = useSelectedLayoutSegment()
const isActive = slug === segment
return (
<Link
href={`/blog/${slug}`}
// Change style depending on whether the link is active
style={{ fontWeight: isActive ? 'bold' : 'normal' }}
>
{children}
</Link>
)
}// Import the Client Component into a parent Layout (Server Component)
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>
)
}Version History
| Version | Changes |
|---|---|
v13.0.0 | useSelectedLayoutSegment introduced. |