es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué mi componente AppBar MUI con estilo no cambia de estilo al cambiar de estado?

Estoy tratando de cambiar el color de la barra de la aplicación al desplazarse. Usé una función estilizada de MaterialUI para crear mi barra de aplicación. Verifiqué el valor del estado en la consola y cambia correctamente. Desafortunadamente, la barra de la aplicación no reacciona al cambio de estado de mi propiedad pasada en la función estilizada que se supone que es el desencadenante para el color de fondo del componente.

Aquí está el código de la función estilizada:

const AppBar = styled(MUIAppBar)(({ theme, scrollNav }) => ({
backgroundColor: !scrollNav ? ‘#E6EEF4 !important’ : ‘red !important’,
position: ‘fixed’,
color: ‘#232F3D’,
paddingTop: theme.spacing(2),
paddingBottom: theme.spacing(2),
}))

Aquí está el desencadenante para el cambio de estado:

const [scrollNav, setScrollNav] = useState(false)
const changeNav = () => {
setScrollNav(window.scrollY >= 96 ? true : false)
}
useEffect(() => {
window.addEventListener(‘scroll’, changeNav)
}, [])

Aquí es cómo paso el estado a la función estilizada:

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el código del componente con estilo es correcto, ya que establece correctamente el color de fondo en función del valor de la propiedad “scrollNav” que se pasa. El problema puede residir en cómo se está actualizando el estado y se está pasando al componente.

    En primer lugar, asegúrese de que el estado se está actualizando correctamente en la función “changeNav”. Registre en consola el valor de “window.scrollY” y el valor actualizado de “scrollNav” para asegurarse de que se está actualizando correctamente.

    A continuación, compruebe que el estado se está pasando correctamente al componente con estilo. Verifique que el nombre de la propiedad que se está pasando sea “scrollNav” y no “scrollnav” o alguna variación.

    Si estos pasos no resuelven el problema, es posible que necesite proporcionar más contexto o código para identificar dónde puede estar el problema.

Comments are closed.