Tengo una vista de árbol de material ui v4 que funciona bien con react-dnd usando el siguiente código.
Cuando actualizo a mui v5 treeview, el arrastre ya no funciona, el elemento ya no se puede arrastrar.
Eché un vistazo entre la implementación de 2 TreeItem pero hay muchos cambios y estoy perdido.
https://github.com/mui-org/material-ui/blob/v4.x/packages/material-ui-lab/src/TreeItem/TreeItem.js
https://github.com/mui-org/material-ui/blob/master/packages/mui-lab/src/TreeItem/TreeItem.js
¿Qué me estoy perdiendo? Muchas gracias por tus respuestas :)
//recursive function to generate TreeItem tree with Drag embedded function Box({ treeItem }) { const [{ isDragging }, drag, preview] = useDrag(() => ({ type: "TREEVIEW", item: !treeItem.children.length //if the resource has no child ? treeItem.data // we provide only the resource data : [ treeItem.data, ...flatten(extractChildren(treeItem), extractChildren).map( //other wise we provide resource + child resources (x) => delete x.children && x ), ], collect: (monitor) => ({ isDragging: monitor.isDragging(), }), })); return ( <> <DragPreviewImage connect={preview} src={knightImage} /> <TreeItem nodeId={treeItem.data.TreeID} label={treeItem.data.TreeName} ref={drag} style={{ isDragging }} > {treeItem.children && treeItem.children.map((treeItem) => <Box treeItem={treeItem} />)} </TreeItem> </> ); } const renderedListItems = tree.map((treeItem) => ( <Box treeItem={treeItem} /> ));Probablemente, esto sucede porque el elemento del árbol se selecciona al hacer clic en él. A pesar de que disableSelection se establece como verdadero en TreeView , de alguna manera el elemento secundario en el que se hizo clic se enfoca a través de la propiedad aria-activedescendant en el nivel raíz.
Podemos omitir este evento de enfoque agregando onFocusCapture={e => e.stopPropagation()} en TreeItem , lo que hace que el elemento se pueda arrastrar de manera efectiva.