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

330
Vistas
¿Cómo hacer un TreeView expandido por defecto?

Por defecto, @mui TreeView tiene todos sus nodos colapsados.

Quiero que tenga todos sus nodos expandidos por defecto, y no puedo encontrar cómo hacerlo.

Mis intentos fueron usar un método que llamé handleExpandAll pero no funciona, el navegador dice que se procesa demasiadas veces. Lo cual es raro porque sin la llamada aparentemente se renderiza 1 vez, pero con ella se renderiza una cantidad indefinida de veces.

Tal vez uno de ustedes podría ayudarme.

Por ahora mi código se ve así:

 import { useEffect } from "react"; import classes from "./TreeNavigation.module.css"; import TreeView from "@mui/lab/TreeView"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import ChevronRightIcon from "@mui/icons-material/ChevronRight"; import CustomTreeItem from "../../ui/CustomTreeItem/CustomTreeItem.js"; import { apiStates } from "../Leases/useLeases.js"; import LoadingDiv from "../../ui/LoadingDiv/LoadingDiv.js"; function TreeNavigation(props) { const [expanded, setExpanded] = useState([]); const [selected, setSelected] = useState([]); const handleSelect = (event, nodeId) => { props.onItemSelected(nodeId); }; const handleToggle = (event, nodeIds) => { setExpanded(nodeIds); }; const handleExpandAll = (length) => { setExpanded((oldExpanded) => [...Array(length).keys()]); }; const data = props.data; const renderTree = (nodes) => ( <CustomTreeItem key={nodes.id} nodeId={nodes.id} label={nodes.name}> {Array.isArray(nodes.children) ? nodes.children.map((node) => renderTree(node)) : null} </CustomTreeItem> ); switch (data.state) { case apiStates.ERROR: return <p>ERROR: {data.error || "General error"}</p>; case apiStates.SUCCESS: const batimentsTreeViews = data.data.map((bat) => { var b = []; for (const key in bat) { b = { id: key, ...bat[key], }; } return renderTree(b); }); handleExpandAll(data.data.length); return ( <TreeView aria-label="controlled" defaultCollapseIcon={<ExpandMoreIcon />} defaultExpandIcon={<ChevronRightIcon />} expanded={expanded} selected={props.selectedId} onNodeToggle={handleToggle} onNodeSelect={handleSelect} sx={{ flexGrow: 1, width: "100%", maxWidth: "none", overflowY: "auto", }} > {batimentsTreeViews} </TreeView> ); default: return <LoadingDiv />; } } export default TreeNavigation;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¿Comprobaste de la siguiente manera?

 const [expanded, setExpanded] = useState([...Array(length).keys()]);

La vista de árbol predeterminada de Mui se expande todo de esta manera.

Editar demostración de material de ControlledTreeView (bifurcado)

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