我目前正在使用Next.js开发一个应用程序,并使用官方Next.js文档中的多个根布局(https://nextjs.org/docs/app/building-your-application/routing/route-groups#creating-multiple-root-layouts).因为我需要单独设计每条路由的样式.

然而,在实现多个根布局后,我遇到了一个问题,即活动链接的 colored颜色 没有按预期更改,即使它在更改之前工作得很好.

对不起,因为我是初学者,关于next.js的最新版本的信息并不多

下面是我处理活动链接 colored颜色 的相关代码:

import { useState } from "react";
import Link from "next/link";
import { usePathname } from "next/navigation";

const Sidebar = () => {
    const [isMobileMenuVisible, setIsMobileMenuVisible] = useState(false);
    const pathname = usePathname();

    const isActive = (href) => {
        if (pathname.startsWith(href)) {
            return "text-[#909090]";
        }
        return "";
    };

    const toggleMobileMenu = () => {
        setIsMobileMenuVisible(!isMobileMenuVisible);
    };

    return (
         DACHI-GIORGI GARUCHAVA
         {/* Mobile dropdown menu */}
         <button
            className="text-[#484848] no-underline cursor-pointer font-MPlus1 leading-6 font-thin tracking-wider mb-2"
            onClick={toggleMobileMenu}
            Menu
            {isMobileMenuVisible && (
                这个 Witness
               {/* Add other links here */}
            )}
           {/* Desktop link list */}
           Invasive Modification
           {/* Add other links here */}
       );
};

export default Sidebar;

这个

业务 %1

路径名 以确定链接是否处于活动状态,并相应地应用特定的文本 colored颜色 .在我开始使用多个根布局之前,这个逻辑运行得很好,我需要使用它们来分别设置路由的样式.

如有任何帮助,将不胜感激

推荐答案

因此,我运行了您在代码沙箱中共享的GitHub repo,它看起来问题与根布局无关.您的isActive方法工作正常,并且它还将text-[#909090]类名添加到您的标记中.

这里的主要问题是,您使用@apply指令创建了一个名为project_link的自定义类,并且您在该类中指定的 colored颜色 实际上覆盖了通过text-[#909090]添加的 colored颜色 ,以下是该标记的屏幕截图以供参考:

text-[#909090] getting overridden by the color project_link class

因此,解决这个问题的最好方法是不使用您在project_link中添加的类抽象,而是直接内联应用类,并根据链接是否处于活动状态有条件地应用 colored颜色 ,因为创建这样的抽象违背了使用tailwind 的目的.他们甚至在他们的文档中有一个章节,解释为什么你应该避免这样的premature class abstractions.

如果你想避免重复,最好是为这些链接创建一个单独的组件,并使用它,它将从父组件中作为props 传递isActive.然后,可以在该组件中应用类,如下所示:

  ...
  className={`no-underline cursor-pointer font-MPlus1 leading-6 font-thin tracking-wider ${isActive ? 'text-[#909090]' : 'text-[#484848]'}`}
  ...

Javascript相关问答推荐

为什么它无法识别日期 Select 器上的任何 Select ?

Webpack将懒惰加载的模块放入主块中

当我使用jQuery时,我的图标显示为[对象对象]

以逗号分隔的列表来数组并填充收件箱列表

除了在Angular 16中使用快照之外,什么是可行且更灵活的替代方案?

如何使用JavaScript动态地将CSS应用于ToDo列表?

Vue Quill css仅应用于我的第一个Quill Editor组件+如何自定义工具栏

如何使用React渲染器放置根dis?

如何获取转换字节的所有8位?

如何为GrapesJS模板编辑器创建自定义撤销/重复按钮?

如何将连续的十六进制字符串拆分为以空间分隔的十六进制块,每个十六进制块包含32个二元组?

用JavaScript复制C#CRC 32生成器

禁用.js文件扩展名并从目录导入隐式根index.js时,找不到NodeJS导入模块

如何将数组用作复合函数参数?

让chart.js饼图中的一个切片变厚?

如何在DYGRAPS中更改鼠标事件和键盘输入

使每个<;li>;元素的 colored颜色 与随机生成的 colored颜色 列表不同(不重复

通过跳过某些元素的对象进行映射

为什么我看到的是回复,而不是我的文档?

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?