1.0.1 • Published 3 years ago

ex-tree v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

ex-tree

一个简单的用于处理树数据的插件。

api

constructor (options)

构造函数

ParamTypeDefaultRequiredDescription
idstringidfalseid 对应的字段名称
childrenstring |numberchildrenfalsechildren 对应的字段名称
dataArray-true数据源
trimFunction-false修剪函数,从叶子节点开始,return true 删除节点,return false 保留节点

基础用法:

import ExTree from 'ex-tree'

const exTree = new ExTree({
  data: [
    {
      id: 1,
      name: 'data-1',
      children: [
        { id: 11, name: 'data-1-1' },
        { id: 12, name: 'data-1-2' }
      ]
    },
    { id: 2, name: 'data-2' }
  ]
})

指定数据的 id 与 children:

const exTree = new ExTree({
  id: 'path',
  children: 'child',
  data: [
    {
      path: 1,
      name: 'data-1',
      child: [
        { path: 11, name: 'data-1-1' },
        { path: 12, name: 'data-1-2' }
      ]
    },
    { path: 2, name: 'data-2' }
  ]
})

修剪数据:

const exTree = new ExTree({
  data: [
    {
      id: 1,
      name: 'data-1',
      children: [
        { id: 11, name: 'data-1-1' },
        { id: 12, name: 'data-1-2' }
      ]
    },
    { id: 2, name: 'data-2' }
  ],
  trim: node => {
    // 删除 id 为 2 和 11 的数据
    return node.id === 2 || node.id === 11
  }
})

// [{id:1,name:'data-1',children:[{id:12,name:'data-1-2'}]}]
console.log(exTree2.get())

修剪是从叶子节点开始,比如希望一个节点的子节点全部删除后,也把这个节点删除,可以这么做:

const exTree = new ExTree({
  data: [
    {
      id: 1,
      name: 'data-1',
      children: [
        { id: 11, name: 'data-1-1', prune: true },
        { id: 12, name: 'data-1-2', prune: true }
      ]
    },
    { id: 2, name: 'data-2' }
  ],
  trim: node => {
    // 先将 prune 为 true 的节点删除
    if (node.prune) return true
    // 再判断 children.length 是否为 0,如果是,则删除
    if (node.children && node.children.length === 0) return true
    return false
  }
})

// [{id:2,name:'data-2'}]
console.log(exTree2.get())

getData ()

获取源数据。

getNode (id)

传入 id,获取指定 id 的节点。

getChain (id)

获取指定节点组成的链。

flat ()

将树展平。

1.0.1

3 years ago

1.0.0

3 years ago