Creé una barra lateral con configuraciones donde el usuario puede ocultar o mostrar las secciones que necesita.
Así es como se ven estos componentes:
<List> {section.elements.map((subsection) => ( <ListItem key={subsection.name}> {settings ? ( <Checkbox checked={subsection.show} onChange={() => { subsection.show = !subsection.show setSidebar((prev) => [...prev]) }} /> ) : null} {subsection.show || settings ? ( <Link href={section.routePrefix + subsection.href} passHref> <Button sx={{ color: router.pathname.includes(`${section.routePrefix + subsection.href}`) ? 'secondary.main' : 'primary.main', width: "100%", justifyContent: "start" }} startIcon={subsection.icon} > {subsection.name} </Button> </Link> ) : null} </ListItem> ))} </List> Tengo un problema con la paz del código que comienza con subsection.show || settings Como puede ver, si esta condición es falsa, simplemente no muestro nada al usuario, pero de hecho, en la interfaz no funciona. Después de compilar, todavía parece que hay una etiqueta li .
Así es como se ve en la parte delantera.
Entonces, mi pregunta es, cómo ocultar completamente este componente, tal vez ni siquiera compilarlo. Estaba tratando de configurar mostrar ninguno y ocultarlo de diferentes maneras, pero aún no funciona.
Creo que esto es lo que se supone que debes hacer:
<List> {section.elements.map((subsection) => subsection.show || settings ? ( <ListItem key={subsection.name}> {settings ? ( <Checkbox checked={subsection.show} onChange={() => { subsection.show = !subsection.show; setSidebar((prev) => [...prev]); }} /> ) : null} <Link href={section.routePrefix + subsection.href} passHref> <Button sx={{ color: router.pathname.includes( `${section.routePrefix + subsection.href}` ) ? "secondary.main" : "primary.main", width: "100%", justifyContent: "start" }} startIcon={subsection.icon} > {subsection.name} </Button> </Link> </ListItem> ) : null )} </List>