<Link>

<Link> rotalar arasında ön getirme ve istemci tarafında gezinme sağlamak için HTML <a> öğesini genişleten bir React bileşenidir. Next.js'de rotalar arasında gezinmenin birincil yoludur.

app/page.tsx
import Link from 'next/link'
 
export default function Page() {
  return <Link href="/dashboard">Dashboard</Link>
}

Props

İşte Bağlantı Bileşeni için mevcut aksesuarların bir özeti:

PropExampleTypeRequired
hrefhref="/dashboard"String or ObjectYes
replacereplace={false}Boolean-
scrollscroll={false}Boolean-
prefetchprefetch={false}Boolean-

Bilmenizde fayda var: className veya target="_blank" gibi <a> etiket öznitelikleri <Link> öğesine prop olarak eklenebilir ve altta yatan <a> öğesine aktarılır.

href (required)

Gidilecek yol veya URL.

<Link href="/dashboard">Dashboard</Link>

href örneğin bir nesneyi de kabul edebilir:

// Navigate to /about?name=test
<Link
  href={{
    pathname: '/about',
    query: { name: 'test' },
  }}
>
  About
</Link>

replace

Varsayılan değer false. true, next/link olduğunda, tarayıcının geçmiş yığınına yeni bir URL eklemek yerine geçerli geçmiş durumunu değiştirir.

app/page.tsx
import Link from 'next/link'
 
export default function Page() {
  return (
    <Link href="/dashboard" replace>
      Dashboard
    </Link>
  )
}

scroll

Varsayılan olarak true. <Link> 'un varsayılan davranışı, yeni bir rotanın en üstüne kaydırmak veya geriye ve ileriye doğru gezinme için kaydırma konumunu korumaktır. false , next/link bir gezintiden sonra sayfanın en üstüne kaydırma yapmayacaktır.

app/page.tsx
import Link from 'next/link'
 
export default function Page() {
  return (
    <Link href="/dashboard" scroll={false}>
      Dashboard
    </Link>
  )
}

prefetch

Varsayılan değer true. true, next/link sayfayı ( href ile gösterilen) arka planda önceden getirecektir. Bu, istemci tarafı gezintilerinin performansını artırmak için kullanışlıdır. Görüntü alanındaki (başlangıçta veya kaydırma yoluyla) herhangi bir <Link /> önceden yüklenecektir.

Prefetch, prefetch={false} adresi geçilerek devre dışı bırakılabilir. Prefetching yalnızca üretimde etkinleştirilir.

app/page.tsx
import Link from 'next/link'
 
export default function Page() {
  return (
    <Link href="/dashboard" prefetch={false}>
      Dashboard
    </Link>
  )
}

Examples

Linking to Dynamic Routes

Dinamik rotalarda, bağlantının yolunu oluşturmak için şablon değişmezleri kullanmak kullanışlı olabilir.

Örneğin, app/blog/[slug]/page.js dinamik rotasına giden bağlantıların bir listesini oluşturabilirsiniz:

app/blog/page.js
import Link from 'next/link'
 
function Page({ posts }) {
  return (
    <ul>
      {posts.map((post) => (
        <li key={post.id}>
          <Link href={`/blog/${post.slug}`}>{post.title}</Link>
        </li>
      ))}
    </ul>
  )
}

Middleware

Kimlik doğrulama veya kullanıcıyı farklı bir sayfaya yeniden yazmayı içeren diğer amaçlar için Middleware kullanmak yaygındır. <Link /> bileşeninin Middleware aracılığıyla yeniden yazılan bağlantıları düzgün bir şekilde önceden getirebilmesi için Next.js'ye hem görüntülenecek URL'yi hem de önceden getirilecek URL'yi söylemeniz gerekir. Bu, önceden getirilecek doğru rotayı bilmek için ara katman yazılımına gereksiz getirmelerden kaçınmak için gereklidir.

Örneğin, kimliği doğrulanmış ve ziyaretçi görünümlerine sahip bir /dashboard rotası sunmak istiyorsanız, kullanıcıyı doğru sayfaya yönlendirmek için Orta Yazılımınıza aşağıdakine benzer bir şey ekleyebilirsiniz:

middleware.js
export function middleware(req) {
  const nextUrl = req.nextUrl
  if (nextUrl.pathname === '/dashboard') {
    if (req.cookies.authToken) {
      return NextResponse.rewrite(new URL('/auth/dashboard', req.url))
    } else {
      return NextResponse.rewrite(new URL('/public/dashboard', req.url))
    }
  }
}

Bu durumda, <Link /> bileşeninizde aşağıdaki kodu kullanmak istersiniz:

import Link from 'next/link'
import useIsAuthed from './hooks/useIsAuthed'
 
export default function Page() {
  const isAuthed = useIsAuthed()
  const path = isAuthed ? '/auth/dashboard' : '/dashboard'
  return (
    <Link as="/dashboard" href={path}>
      Dashboard
    </Link>
  )
}

Version History

VersionChanges
v13.0.0No longer requires a child <a> tag. A codemod is provided to automatically update your codebase.
v10.0.0href props pointing to a dynamic route are automatically resolved and no longer require an as prop.
v8.0.0Improved prefetching performance.
v1.0.0next/link introduced.