0.1.3 • Published 1 year ago

use-tree-data v0.1.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

use tree data

English | 简体中文

A super-light React hook to manage tree data easier.

Features

  • built in CRUD handler: insert, remove, move, update, filter
  • custom recursive structure support
  • typescript support

Usage

Install

$ yarn add use-tree-data
$ npm install use-tree-data --save

Initialization

example

Basic

import useTreeData from 'use-tree-data';

const App = () => {
  const [tree, actions] = useTreeData(treeData);

  const insertToRoot = () => {
    actions.insert({ id: 'node-1', name: 'node-1' });
  };
  const removeNode1 = () => {
    actions.remove(n => n.id === 'node-1');
  };

  // ...
};

Initial With Options

const App = () => {
  const [tree, actions] = useTreeData<CustomDataType>(treeData, {
    insertPosition: 'TAIL',
    childrenKey: 'leafs',
  });
};

API

const [
  tree,
  { setTree, insert, remove, update, move, setFilter, find, forEach, getPath },
  treeHelper,
] = useTreeData<DataType>(data?: DataType[], option?: TreeHelperOptions<DataType>)

TreeHelperOptions

keydescriptiontypedefault
childrenKeyrecursive children keykeyof DataType'children'
insertPositionnode insert position'HEAD' \| 'TAIL''TAIL'

Hook Returned Value

keydescriptiontype
treeDatatree state data泛型 T
actionsoperationsactions
treeHelpertreeHelper instanceTreeHelper

Actions

keytype
setTree(data: DataType[]) => void
insert(node: DataType, callback: ParentCallback<DataType>) => DataType[]
remove(callback: NodeCallback<DataType>) => DataType[]
update(callback: NodeCallback<DataType>, props: Partial<DataType>) => DataType[]
move(callback: NodeCallback<DataType>, parent: ParentCallback<DataType>) => DataType[]
setFilter(callback: NodeCallback<DataType>, returnChildren?: boolean) => DataType[]
find(callback: NodeCallback<DataType>): DataType => DataType
forEach(callback: (n: DataType) => void) => void
getPath(callback: NodeCallback<DataType> => DataType[]
0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago