如果路径名与其href匹配,我想激活一个链接.

function Component() {
 const pathname = usePathname();
  return (
      <div className="links">
        <Link href="/">Home</Link>
        <Link href="/store" className={`${pathname === this.href && "active"}`} >Store</Link>
        <Link href="/actors">Actors</Link>
      </div>
 )}

这就是我试过的,但不幸的是,它不起作用.我能做这样的事吗?

推荐答案

除了拉奥·阿西姆所说的.为了避免重复,将它们作为一个数组,然后对该数组使用.map.

function Component() {
 const pathname = usePathname();
  return (
      <div className="links">
        {[
          { label: "Home", href: "/" },
          { label: "Store", href: "/store" },
          { label: "Actors", href: "/actors" },
        ].map(({label, href}) => (
          <Link 
            key={label} 
            href={href}
            className={pathname === href ? "active" : ""}
           >{label}</Link>
        ))}
      </div>
 )}

为了获得更好的可读性,可以将数组声明移出JSX:

function Component() {
  const pathname = usePathname();

  const navElements = [
    { label: "Home", href: "/" },
    { label: "Store", href: "/store" },
    { label: "Actors", href: "/actors" },
  ]

  return (
      <div className="links">
        {navElements.map(({label, href}) => (
          <Link 
            key={label} 
            href={href}
            className={pathname === href ? "active" : ""}
           >{label}</Link>
        ))}
      </div>
 )}

Css相关问答推荐

隐藏div后缺少div的InnerHTML

如何为垫子制作圆角- Select 所有角点上的下拉列表

在NextJS/Reaction应用程序中显示更新问题

Nuxt 3+sass:不能将包含路径与@IMPORT和@USE一起使用

在GRID-TEMPLATE-ROWS中设置最大行数:Repeat()

在Reaction中自定义ANTD日期选取器

如何在Bootstrap 5上使用移动设备居中内容?

具有共享的自动调整列宽的多个 CSS 网格

如何在 VS Code 中获得 JavaFX CSS 属性的自动完成功能?

当前的 html 标签没有发生两列布局

在revealjs/Quarto中定义一类反背景的幻灯片

CSS Slanding Div 边缘在图像上

使用 styled-components,我如何定位组件的子类?

Adobe Illustrator 删除我在 svg 图像上的类名.我怎样才能防止这种情况?

firefox overflow-y 不能使用嵌套的 flexbox

如何制作一个div来包装两个浮动div?

无法使用 Bootstrap 3 更改占位符 colored颜色

CSS 块格式化上下文是如何工作的?

如何使用 CSS 消除元素的偏移量?

从 textarea 中删除所有样式(边框、发光)