Estoy aprendiendo React como principiante. Estoy trabajando con módulos CSS.
Menu.module.css no funciona al 100%, no aplica estilos para .menu a.last selector y no sé por qué (funciona perfectamente para .menu a ). El problema persiste al usar módulos CSS, pero funciona según lo previsto con CSS simple.
Menú.jsx
import styles from './Menu.module.css' export default function Menu({ className, items = [], children }) { return ( <div className={`menu ${styles.menu} ${className || ''}`}> {children ? <h2>{children}</h2> : ''} <ul> {items.map((item, i) => ( <li key={i}> <a href={item.href} className={item.className || ''} > {item.name} </a> </li> ))} </ul> </div> ) }Menú.módulo.css
.menu a { color: black; text-decoration: none; } .menu a.last { background: red !important; }Imagen del código y HTML: https://ibb.co/r5m6W7s
Puedo obtener el elemento a.last a través de la consola usando el mismo querySelector que usa el archivo CSS, por lo que esto me lleva a pensar que hay un problema lógico o que los selectores de Módulos CSS funcionan de manera diferente a CSS esta vez.
Supongo que es un problema muy fácil de resolver, pero no puedo conseguirlo. Gracias por tu ayuda.
Cambié de nuevo a CSS simple para verificar si funcionaría y sí, funcionó.
Intenté hacerlo nuevamente desde cero con módulos CSS pero resultó en el mismo problema.
Intenté cambiar los nombres de clase incluso usando una clase simple (no generada aleatoriamente por el compilador de Módulos CSS) y usé este nombre de clase simple para verificar y no funcionó mientras seguía trabajando con el archivo .module.css.
Diría que deberías usar className={styles[item.className] || ''} .
item.className no se referirá al módulo CSS.
Resuelto por cheesyMan : no consideré que TODOS los nombres de clase en el archivo CSS cambiaron sus nombres después de usar módulos CSS. Solo estaba usando el selector de módulo .menu CSS pero no el selector/propiedad del módulo .last CSS. El código se ejecutaba como .menu_random123 a.last (incorrecto) mientras que para funcionar necesitaba .menu_random123 a.last_random123 . Fue muy difícil notarlo porque el elemento principal pasaba la última clase.