React Arborist – A rotund-featured tree part for React

React Arborist – A rotund-featured tree part for React

A rotund-featured tree part for React.


The tree UI is ubiquitous in machine applications. There are loads of tree part libraries for React, nonetheless none were rotund-featured adequate to stand on their possess.

This library offers the total general aspects expected in a tree. You might contain out one or many nodes to pull and tumble into new positions, initiate and shut folders, render an inline invent for renaming, efficiently expose hundreds of objects, and present your possess node renderer to manipulate the vogue.


Set up

npm install react-arborist


Render the tree data construction.



function Node({ ref, styles, data}) {
return (



const data = {
  id: "The Root",
  younger other folks: [{id: "Node A"}, {id: "Node B"}]

objective App() {
  return (
    Tree data={data}>

objective Node({ ref, styles, data}) {
  return (
    div ref={ref} style={styles.row}>
      div style={styles.indent}>


Anticipated Files Construction

The Tree part expects the data prop to be a tree-fancy data construction with the following form:

form Files = {
  id: string, /Required */
  younger other folks?: Files[]
  isOpen?: boolean

In case your data doesn’t search fancy this, that it is probably you’ll present a childrenAccessor prop. That it is probably you’ll more than probably moreover moreover present isOpenAccessor. The associated rate is known as a string or a objective.

node.items} … “>
Tree childrenAccessor="objects" ... 
// Or 
Tree childrenAccessor={(node) => node.objects} ... 

Tree Ingredient

Unlike other Tree Parts, react-arborist is designed as a managed part. This intention the user will present the tree data and the handlers to update it. The staunch direct managed internally is for run and tumble, different, and bettering.

Prop Default Description
data (required) The tree data construction to render as described above.
width 300 The width of the tree.
top 500 The discontinue of the tree. To dynamically own or now not it is container, use a hook or part to receive the width and top of the Tree’s mum or dad.
rowHeight 24 The discontinue of each row.
indent 24 The different of pixels to indent itsy-bitsy one nodes.
hideRoot counterfeit Cowl the root node so that the most important location of younger other folks appear as the roots.
onToggle noop Handler called when a node is opened or closed. This and the following capabilities must update the data prop for the tree to re-render.
onMove noop Handler called when a user strikes one or extra nodes by dragging and losing.
onEdit noop Handler called when a user performs an inline edit of the node.
childrenAccessor “younger other folks” Broken-down to salvage a node’s younger other folks if they exist on a property rather then “younger other folks”.
isOpenAccessor “isOpen” Broken-down to salvage a node’s openness direct if it exists on a property rather then “isOpen”.
openByDefault beautiful Retract if the node must be initiate or closed when it has an undefined openness direct.
className undefined Provides a class to the containing div.

The staunch itsy-bitsy one in every of the Tree Ingredient must be a NodeRenderer objective as described below.

const NodeRenderer = ({
  innerRef, data, styles, handlers, direct, tree
}) => ...

const MyApp = () => 

Node Renderer Ingredient

The Node Renderer is where you salvage to kill the tree your possess. You entirely possess the vogue and functionality. The props passed to it is miles going to allow you to attain regardless of you need to.

The most general node renderer will search fancy this:

objective NodeRenderer({
}) {
  return (
    div ref={innerRef} style={styles.row}>
      div style={styles.indent}>{}/div>

The objective above is passed data for this particular person node, the DOM ref historical for run and tumble, the styles to direct the row within the virtualized list and the styles to indent potentially the most up-to-date node in keeping with its stage within the tree.

Prop Form Description
data Node A single node from the tree data construction equipped.
innerRef Ref Needs to be connected to the root facet returned by the NodeRenderer. That is obligatory for run and tumble to work.
styles object That is an object that accommodates styles for the direct of the row, and the stage of indentation. Every key is described below.
direct object An handful of boolean values that repeat potentially the most up-to-date direct of this node. Survey below for little print.
handlers object A collection of handlers to join to the DOM, that offer selectable and toggle-able behaviors. Every handler is described below.
tree TreeMonitor This object can be historical to salvage on the interior direct of the total tree part. As an illustration, tree.getSelectedNodes(). Your entire methods are listed below within the Tree Prop piece.

Styles Prop

These are the properties on the styles object passed to the NodeRenderer.

Name Form Description
row CSSProperties Since the tree greatest renders the rows that are for the time being seen, the total rows are completely positioned with a mounted top and left. These styles are on this property.
indent CSSProperties That is merely a left padding location to the stage of the tree multiplied by the tree indent prop.

Reveal Prop

These are the properties on the direct object passed to the NodeRenderer.

Name Form Description
isOpen boolean Appropriate if this node has younger other folks and the younger other folks are seen. Employ this to disp

Read More



β€œSimplicity, patience, compassion.
These three are your greatest treasures.
Simple in actions and thoughts, you return to the source of being.
Patient with both friends and enemies,
you accord with the way things are.
Compassionate toward yourself,
you reconcile all beings in the world.”
― Lao Tzu, Tao Te Ching