Vue | 一个支持数据抓取的JSON树组件

一个将 JSON 字符串渲染成树形结构的 Vue2.x 组件,主要原理是利用 Vue 的递归组件,进行深度优先的先序遍历。不仅可以将一段不可读的 JSON 字符串转化为可读的树形结构,同时可用于抓取某一子树的数据。

组件在它的模板内可以递归地调用自己。不过,只有当它有 name 选项时才可以这么做

  • 基础功能: JSON 的美化
  • 高级功能: JSON 数据对应层级数据的获取

设计思路

<tree
  :parent-data="data"
  :data="item"
  :path="path + (Array.isArray(data) ? `[${index}]` : `.${index}`)"
  :path-checked="pathChecked"
  :path-selectable="pathSelectable"
  :selectable-type="selectableType"
  :index="index"
  :current-deep="currentDeep"
  @click="handleItemClick">
</tree>
复制代码

通过 parent-data 传入父亲的数据,data 传入孩子的数据,当子树的数据是简单类型时,不再进入递归,同时该组件提供了一个 click 事件,用于获取特定节点的树数据,而孩子的数据,则通过递归机制不断向上一层级传递,类似于“冒泡机制”。

属性

  • 若仅使用基础功能(JSON美化),只需关注功能级别为 基础 的属性。
  • 若使用高级功能(数据层级的获取),需关注 基础高级 的属性。
属性级别说明类型默认值
data基础待美化的源数据,注意不是 JSON 字符串JSON 对象-
deep基础数据深度, 大于该深度的数据将不被展开numberInfinity
path高级定义最顶层数据层级stringroot
pathChecked高级定义哪些数据层级是已被选中的array[]
pathSelectable高级定义哪些数据层级是可以被选中的Function(itemPath, itemData)-
selectableType高级定义组件支持的选中方式,默认无选中功能enum: both, checkbox, tree-

事件

  • 若使用高级功能,下列事件才是有效的。
事件名说明回调参数
click点击某一个数据层级时触发的事件(path, data)

类似项目对比

vue-json-tree-viewreact-json-treepretty-json
基于 Vue ,但样式与 JSON 代码区别较大基于 React基于 JQuery + Bootstrap ,样式与本项目最接近

项目地址

转载于:https://juejin.im/post/5a73cec65188257a89298064

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值