<NavLink>
<Link>
link-component にアクティブ状態と保留状態のスタイリング用の追加プロパティをラップします。
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 unstable_viewTransition>
コンポーネントにtransitioning
クラスが追加されるため、CSSを使用してスタイリングできます。
<NavLink to="/messages" unstable_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
よりも長い場合、アクティブとは見なされなくなります。
リンク | 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
プロパティを追加すると、マッチングロジックがケースセンシティブになります。
リンク | URL | isActive |
---|---|---|
<NavLink to="/SpOnGe-bOB" /> | /sponge-bob | true |
<NavLink to="/SpOnGe-bOB" caseSensitive /> | /sponge-bob | false |
unstable_viewTransition
unstable_viewTransition
プロパティは、最終的な状態の更新をdocument.startViewTransition()
でラップすることにより、このナビゲーションのビュー遷移を有効にします。デフォルトでは、遷移中はtransitioning
クラスが<a>
要素に追加されるため、ビュー遷移をカスタマイズできます。
a.transitioning p {
view-transition-name: "image-title";
}
a.transitioning img {
view-transition-name: "image-expand";
}
<NavLink to={to} unstable_viewTransition>
<p>画像番号 {idx}</p>
<img src={src} alt={`Img ${idx}`} />
</NavLink>
className
/style
プロパティやchildren
に渡されるレンダリングプロパティを使用して、isTransitioning
値に基づいてさらにカスタマイズすることもできます。
<NavLink to={to} unstable_viewTransition>
{({ isTransitioning }) => (
<>
<p
style={{
viewTransitionName: isTransitioning
? "image-title"
: "",
}}
>
画像番号 {idx}
</p>
<img
src={src}
alt={`Img ${idx}`}
style={{
viewTransitionName: isTransitioning
? "image-expand"
: "",
}}
/>
</>
)}
</NavLink>
<Link>
プロパティ
<Link>
の他のすべてのプロパティがサポートされています。