To use the Tree component, wrap it in a DndProvider from react-dnd. You must provide a backend (like MultiBackend, HTML5Backend, or TouchBackend) and an onDrop handler to update your tree state. The render prop allows you to define how each node looks, providing access to depth, isOpen, and onToggle.
import { useState } from "react";
import {
Tree,
getBackendOptions,
MultiBackend,
} from "@minoru/react-dnd-treeview";
import { DndProvider } from "react-dnd";
import initialData from "./sample-default.json";
function App() {
const [treeData, setTreeData] = useState(initialData);
const handleDrop = (newTreeData) => setTreeData(newTreeData);
return (
<DndProvider backend={MultiBackend} options={getBackendOptions()}>
<Tree
tree={treeData}
rootId={0}
onDrop={handleDrop}
render={(node, { depth, isOpen, onToggle }) => (
<div style={{ marginLeft: depth * 10 }}>
{node.droppable && (
<span onClick={onToggle}>{isOpen ? "[-]" : "[+]"}</span>
)}
{node.text}
</div>
)}
/>
</DndProvider>
);
}