1.0.4 • Published 2 years ago

vue-huge-tree v1.0.4

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

vue-huge-tree

当数据量很大时, 树形图渲染会异常卡顿, 用户体验极差

本组件有效的解决了这个问题, 渲染速度比普通树形图提高 N 倍

海量数据建议不要放到 data 里,vue 依赖收集会导致内存占用过多。所以此插件没有使用 props 传递海量数据,而是通过 setData(data) 方法

安装

npm i vue-huge-tree

引入

import VueHugeTree from 'vue-huge-tree';
import 'vue-huge-tree/dist/vue-huge-tree.css'

使用

<template>
  <vue-huge-tree
    ref="huge-tree"
    show-checkbox
    show-search-bar
    show-node-count
    :default-checked-keys="checkedKeys"
    @check="onClickCheckbox"
    @click-label="onClickLabel"
    @check-change="onChange"
  ></vue-huge-tree>
</template>

<script>
import VueHugeTree from 'vue-huge-tree';
import 'vue-huge-tree/dist/vue-huge-tree.css';

export default {
  components: {
    VueHugeTree,
  },
  data() {
    return {
      checkedKeys: [],
      treeData: [
        {
          label: '测试0',
          id: '0',
          parentKey: null,
          children: [
            {
              label: '测试0-0',
              id: '0-0',
              parentKey: '0',
              children: [
                {
                  label: '测试0-0-0',
                  id: '0-0-0',
                  parentKey: '0-0',
                  children: null
                },
                {
                  label: '测试0-0-1',
                  id: '0-0-1',
                  parentKey: '0-0',
                  children: null
                }
              ]
            },
            {
              label: '测试0-1',
              id: '0-1',
              parentKey: '0',
              disabled: true,
              children: [
                {
                  label: '测试0-1-0',
                  id: '0-1-0',
                  parentKey: '0-1',
                  disabled: true,
                  children: null
                },
                {
                  label: '测试0-1-1',
                  id: '0-1-1',
                  parentKey: '0-1',
                  disabled: true,
                  children: null
                }
              ]
            }
          ]
        },
        {
          label: '测试1',
          id: '1',
          parentKey: null,
          children: null
        }
      ]
    };
  },
  mounted() {
    this.getTreeData();
  },
  methods: {
    getTreeData() {
      this.$refs['huge-tree'].setData(this.treeData);
      this.checkedKeys = ['0-0-0', '0-1-1'];
    },
    onClickCheckbox(node) {
      console.log(node);
    },
    onClickLabel(node) {
      console.log(node);
    },
    onChange(checkedKeys, checkedNodes) {
      console.log(checkedKeys, checkedNodes);
    }
  }
};
</script>

Attributes

参数说明类型可选值默认值
empty-text内容为空的时候展示的文本string'暂无数据'
node-key每个树节点用来作为唯一标识的属性, 整棵树应该是唯一string'id'
highlight-current是否高亮当前选中节点booleantruefalse
expand-level节点展开的层级number-1: 展开所有节点;1: 展开第一层 (最外层);2: 展开第二层;...-1
indent相邻级节点间的水平缩进,单位为像素number16
show-node-count显示节点对应的数据量booleantruefalse
show-search-bar显示搜索框, 多个关键字之间用英文逗号分隔
placeholder搜索框的占位文本string请输入关键字, 多个关键字之间用英文逗号分隔
default-expanded-keys默认展开的节点的 key 的数组array
loading是否显示数据加载时的状态booleantruefalse
loading-text数据加载状态时提示的文字string'loading...'
checked-action点击 label 选中模式string'none': 不选中;'click': 单击选中;'dblclick': 双击选中'none'
show-checkbox节点是否可被选择booleantruefalse
show-checkbox-leaf-only是否仅叶子节点展示 checkbox, show-checkbox 为 true 时有效booleantruefalse
default-checked-keys默认勾选的节点的 key 的数组 (需要 setData 之后赋值)
check-strictly在显示复选框的情况下,是否严格的遵循父子不互相关联的做法booleantruefalse

Methods

方法名称说明参数
setData导入数据结构object[]
setCheckedKeys通过 keys 设置目前勾选的节点勾选节点的 key 的数组
setCheckedNodes设置目前勾选的节点勾选节点数据的数组
getCheckedKeys若节点可被选择, 则返回目前被选中的节点的 key 所组成的数组
getCheckedNodes若节点可被选择, 则返回目前被选中的节点所组成的数组
clearChecked清空所有已选中的节点
setExpand设置目前展开的节点展开节点的 key 的数组
showCheckedOnly只展示选中的项, 此方法会置空过滤条件(isOnlyInCheckedSearch): 是否只在选中的节点里进行筛选, 默认 true
restore对 showCheckedOnly 之后进行恢复
update手动更新选中状态
clear清空内存占用

Events

事件名称说明回调参数
check-change选中状态变化触发(checkedKeys, checkedNodes) 共两个参数, 依次为: 已选节点的 key 列表; 已选节点列表
check当复选框被点击的时候触发当前节点
click-label节点 label 被点击时的回调当前节点

Scoped Slot

name说明
自定义树节点的内容, 例: <template v-slot="node">{{ node }}</template> 参数详情
search-bar自定义搜索框的内容, 例: <template v-slot:search-bar>xxx</template>
loading自定义加载中 slot, 例: <template v-slot:loading>加载中...</template>

数据结构

属性说明类型可选值默认值
label节点标签string
id节点唯一标识 (属性名受 node-key 影响, 默认为"id")
parentKey父节点的 key (根节点必须为 null)string | number
disabled设置禁用状态booleantruefalse
children节点子元素array

节点结构

属性说明类型
label节点标签string
disabled禁用状态boolean
id节点唯一标识 (属性名受 node-key 影响, 默认为"id")string | number
parentKey父节点的 key (根节点必须为 null)string | number
children节点子元素array
checked勾选状态boolean
hideCheckbox隐藏选择框boolean
indeterminate节点的子树中是否是部分选中boolean
isLeaf是否为叶子节点boolean
path节点位置array
isExpand是否展开boolean
hidden是否隐藏boolean
leafCount后代元素数量number
1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago