Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

151
Vistas
How to set several classes for React-Router 6 NavLink?

How can I assign several classes to className while using NavLink isActive? Actually I want to add a base link styles like font-size and if it is active then active class should be applied otherwise base styles class.

My component:

        <NavLink
          to={category.url}
          state={category}
          onClick={closeMenu}
          className={() => (category.id === locationId ? classes.active : classes.link)}
        >
          {category.name}
        </NavLink>

I know that I can use template literals and set active class like this:

className={() => (category.id === locationId ? `${classes.active} ${classes.link}` : classes.link)}

But is there a more cleaner way?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Several of the NavLink component's props take a callback function that is passed an isActive property.

NavLink

declare function NavLink(
  props: NavLinkProps
): React.ReactElement;

interface NavLinkProps
  extends Omit<
    LinkProps,
    "className" | "style" | "children"
  > {
  caseSensitive?: boolean;
  children?:
    | React.ReactNode
    | ((props: { isActive: boolean }) => React.ReactNode);
  className?:
    | string
    | ((props: {
        isActive: boolean;
      }) => string | undefined);
  end?: boolean;
  style?:
    | React.CSSProperties
    | ((props: {
        isActive: boolean;
      }) => React.CSSProperties);
}

What you can do is pass a callback function to the NavLink that returns the combined className string value.

Example:

<NavLink
  to={category.url}
  state={category}
  onClick={closeMenu}
  className={({ isActive }) => 
    [
      classes.link,
      isActive ? classes.active : null,
    ]
      .filter(Boolean)
      .join(" ")
  }
>
  {category.name}
</NavLink>

If you don't need know which link is actually active and you really do just want to set the classes on category.id === locationId then apply the same logic under this different condition.

<NavLink
  to={category.url}
  state={category}
  onClick={closeMenu}
  className={() => 
    [
      classes.link,
      category.id === locationId ? classes.active : null,
    ]
      .filter(Boolean)
      .join(" ")
  }
>
  {category.name}
</NavLink>
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda