Link

NuxtLinkのラッパーに追加の小道具があります。

使用法

Linkコンポーネントは<NuxtLink>をcustom propを使用したラッパーです。いくつかの追加の小道具を提供します

  • inactive-classプロパティはリンクがアクティブなときにクラスを設定します。
  • exactは、リンクがアクティブで、ルートが現在のルートとまったく同じ場合にactive-classでstyleするためのプロパティです。
  • exact-queryとexact-hashは、リンクがアクティブで、クエリまたはハッシュが現在のクエリまたはハッシュとまったく同じである場合、active-classでスタイルを維持します。
    • xexact-query="partial"を使用して、リンクがアクティブで、クエリが現在のクエリと部分的に一致する場合、active-classでスタイルを設定します。

この背景にある動機は、Nuxt 2/Vue 2でNuxtLinkと同じAPIを提供することです。Vue 2](https://router.vuejs.org/guide/migration/#removal-of-the-exact-prop-in-router-link)ガイドのVue Router [migrationで詳しく読むことができます。

Breadcrumb、Button、ContextMenu、DropdownMenu、[NavigationMenu/docs/components/navigation-menu)コンポーネントで使用される。

Tag

Linkコンポーネントは、toプロパティが指定されているときに<a>タグをレンダリングします。そうでないときは<button>タグをレンダリングします。asプロパティを使用してフォールバックタグを変更できます。

<template>
  <ULink as="button">Link</ULink>
</template>
toプロパティを変更することで、レンダリングされたHTMLを調べることができます。

Style

デフォルトでは、リンクにはデフォルトのアクティブスタイルと非アクティブスタイルがあります。 #themeセクションを確認してください。

<template>
  <ULink to="/docs/components/link">Link</ULink>
</template>
toプロパティを変更してアクティブ状態と非アクティブ状態を確認してください。

rawプロパティを使用してこの動作をオーバーライドし、class、active-class、inactive-classを使用して独自のスタイルを提供できます。

<template>
  <ULink raw to="/docs/components/link" active-class="font-bold" inactive-class="text-muted">Link</ULink>
</template>
VSCode用にTailwind CSS IntelliSense拡張を使用しており、active-classとinactive-classプロパティの自動補完を取得したい場合は、.vscode/settings.jsonに以下の設定を追加できます:
.vscode/settings.json
{
  "tailwindCSS.classAttributes": [
    "active-class",
    "inactive-class"
  ]
}

Locale badge{label="4.7+" class="align-text-top"}

Linkコンポーネントはインストール時に自動的に[@nuxtjs/i18nxph14xhttps://i18n.nuxtjs.org/)に統合されます。内部リンクは手動でラップする必要なく$localePathヘルパーを使用して自動的にローカライズされます。

<template>
  <!-- Automatically becomes /en/about or /fr/about based on current locale -->
  <ULink to="/about">About</ULink>
</template>
必要に応じてlocalePath()またはlocaleRoute()を手動で使用できます。
Nuxt UIの国際化について詳しくはこちら。

API

Props

Prop Default Type
as
'button'
any

The element or component this component should render as when not a link.

type
'button'
"reset" | "submit" | "button"

The type of the button when not a link.

disabled
boolean
active
undefined
boolean

Force the link to be active independent of the current route.

exact
boolean

Will only be active if the current route is an exact match.

exactQuery
boolean | "partial"

Allows controlling how the current route query sets the link as active.

exactHash
boolean

Will only be active if the current route hash is an exact match.

inactiveClass
string

The class to apply when the link is inactive.

raw
boolean

When true, only styles from class, activeClass, and inactiveClass will be applied.

locale
undefined
string | false | true

Control i18n auto-localization when @nuxtjs/i18n is installed.

  • undefined / true (default): auto-localizes to the current locale using $localePath. Paths already carrying a locale prefix (from e.g. switchLocalePath()) are detected and left untouched to prevent double-prefixing.
  • false: explicitly disables auto-localization.
  • string: localizes to a specific locale (e.g. 'fr').
to
string | it | et

Route Location the link should navigate to when clicked on.

href
string | it | et

An alias for to. If used with to, href will be ignored

external
boolean

Forces the link to be considered as external (true) or internal (false). This is helpful to handle edge-cases

target
null | string | "_blank" | "_parent" | "_self" | "_top"

Where to display the linked URL, as the name for a browsing context.

rel
null | "noopener" | "noreferrer" | "nofollow" | "sponsored" | "ugc" | string

A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.

noRel
boolean

If set to true, no rel attribute will be added to the link

prefetchedClass
string

A class to apply to links that have been prefetched.

prefetch
boolean

When enabled will prefetch middleware, layouts and payloads of links in the viewport.

prefetchOn
"visibility" | "interaction" | Partial<{ visibility: boolean; interaction: boolean; }>

Allows controlling when to prefetch links. By default, prefetch is triggered only on visibility.

noPrefetch
boolean

Escape hatch to disable prefetch attribute.

trailingSlash
"remove" | "append"

An option to either add or remove trailing slashes in the href for this specific link. Overrides the global trailingSlash option if provided.

activeClass
string

Class to apply when the link is active

exactActiveClass
string

Class to apply when the link is exact active

ariaCurrentValue
'page'
"step" | "page" | "true" | "false" | "location" | "date" | "time"

Value passed to the attribute aria-current when the link is exact active.

viewTransition
boolean

Pass the returned promise of router.push() to document.startViewTransition() if supported.

replace
boolean

Calls router.replace instead of router.push.

name
string
autofocus
false | true | "true" | "false"
form
string
formaction
string
formenctype
string
formmethod
string
formnovalidate
false | true | "true" | "false"
formtarget
string
referrerpolicy
"" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url"
download
any
hreflang
string
media
string
ping
string
このコンポーネントはすべてのネイティブ<a> HTML属性もサポートします。

スロット

Slot Type
default
{ active: boolean; }

Theme

app.config.ts
export default defineAppConfig({
  ui: {
    link: {
      base: 'outline-primary/25 focus-visible:outline-3 rounded-md',
      variants: {
        active: {
          true: 'text-primary',
          false: 'text-muted'
        },
        disabled: {
          true: 'cursor-not-allowed opacity-75'
        }
      },
      compoundVariants: [
        {
          active: false,
          disabled: false,
          class: [
            'hover:text-default',
            'transition-colors'
          ]
        }
      ]
    }
  }
})
vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'

export default defineConfig({
  plugins: [
    vue(),
    ui({
      ui: {
        link: {
          base: 'outline-primary/25 focus-visible:outline-3 rounded-md',
          variants: {
            active: {
              true: 'text-primary',
              false: 'text-muted'
            },
            disabled: {
              true: 'cursor-not-allowed opacity-75'
            }
          },
          compoundVariants: [
            {
              active: false,
              disabled: false,
              class: [
                'hover:text-default',
                'transition-colors'
              ]
            }
          ]
        }
      }
    })
  ]
})

Changelog

No recent changes