NavLink
<NavLink>
追加のプロパティを使用して <Link> をラップし、アクティブ状態と保留状態のスタイルを設定します。
import { NavLink } from "@remix-run/react";
<NavLink to="/messages" className={({ isActive, isPending }) => isPending ? "pending" : isActive ? "active" : "" }> メッセージ</NavLink>自動プロパティ
.active
<NavLink> コンポーネントがアクティブ状態のとき、active クラスが追加されるため、CSS を使用してスタイルを設定できます。
<NavLink to="/messages" />a.active { color: red;}aria-current
NavLink がアクティブ状態のとき、底層のアンカータグに自動的に <a aria-current="page"> が適用されます。MDN の aria-current を参照してください。
.pending
ナビゲーション中に <NavLink> コンポーネントが保留状態のとき、pending クラスが追加されるため、CSS を使用してスタイルを設定できます。
<NavLink to="/messages" />a.pending { color: red;}.transitioning
ナビゲーション中に変換が行われているとき、<NavLink viewTransition> コンポーネントに transitioning クラスが追加されるため、CSS を使用してスタイルを設定できます。
<NavLink to="/messages" viewTransition />a.transitioning { view-transition-name: my-transition;}プロパティ
className コールバック
アクティブおよび保留状態を使用して、適用されるクラス名をカスタマイズするためのコールバックを使用します。
<NavLink to="/messages" className={({ isActive, isPending }) => isPending ? "pending" : isActive ? "active" : "" }> メッセージ</NavLink>style コールバック
アクティブおよび保留状態を使用して、適用されるスタイルをカスタマイズするためのコールバックを使用します。
<NavLink to="/messages" style={({ isActive, isPending }) => { return { fontWeight: isActive ? "bold" : "", color: isPending ? "red" : "black", }; }}> メッセージ</NavLink>children コールバック
アクティブおよび保留状態を使用して、<NavLink> の内容をカスタマイズするためのコールバックを使用します。
<NavLink to="/tasks"> {({ isActive, isPending }) => ( <span className={isActive ? "active" : ""}>タスク</span> )}</NavLink>end
end プロパティは、active および pending 状態のマッチングロジックを変更し、NavLinks の to パスの 末尾 のみをマッチさせます。URL が to より長い場合、もはやアクティブ状態とは見なされません。
| Link | URL | isActive |
|---|---|---|
<NavLink to="/tasks" /> | /tasks | true |
<NavLink to="/tasks" /> | /tasks/123 | true |
<NavLink to="/tasks" end /> | /tasks | true |
<NavLink to="/tasks" end /> | /tasks/123 | false |
<NavLink to="/"> は例外であり、すべての URL が / に一致します。デフォルトのマッチを避けるため、end プロパティは効果的に無視され、ルートルートにいるときのみ一致します。
caseSensitive
caseSensitive プロパティを追加すると、マッチングロジックが大文字と小文字を区別するようになります。
| Link | URL | isActive |
|---|---|---|
<NavLink to="/SpOnGe-bOB" /> | /sponge-bob | true |
<NavLink to="/SpOnGe-bOB" caseSensitive /> | /sponge-bob | false |
viewTransition
viewTransition プロパティは、最終状態の更新を [document.startViewTransition()][document-start-view-transition] でラップすることで、このナビゲーションに View Transition を有効にします。デフォルトでは、変換中に [transitioning クラス][transitioning-class] が [<a> 要素][a-element] に追加され、これを使用してビュー変換をカスタマイズできます。
a.transitioning p { view-transition-name: "image-title";}
a.transitioning img { view-transition-name: "image-expand";}<NavLink to={to} viewTransition> <p>画像番号 {idx}</p> <img src={src} alt={`Img ${idx}`} /></NavLink>isTransitioning 値に基づいて、さらにカスタマイズするために [className][class-name-prop]/[style][style-prop] 属性や [children][children-prop] に渡されたレンダリングプロパティを使用できます。
<NavLink to={to} viewTransition> {({ isTransitioning }) => ( <> <p style={{ viewTransitionName: isTransitioning ? "image-title" : "", }} > 画像番号 {idx} </p> <img src={src} alt={`Img ${idx}`} style={{ viewTransitionName: isTransitioning ? "image-expand" : "", }} /> </> )}</NavLink><Link> プロパティ
<Link> のその他のすべてのプロパティがサポートされています。