当前位置: 首页 > news >正文

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

相关文章:

  • css + css3技术总结报告
  • JDK1.8环境下依然报错 Unsupported major.minor version 52.0
  • 在SpringBoot中使用FluentValidator验证插件
  • Nginx学习之开启Gzip压缩提升页面加载速度
  • 10.系统设计
  • Vue实现简单选项卡
  • Bzoj4872: [Shoi2017]分手是祝愿
  • android开发 获取logcat日志并记录(方便离线调试)
  • 微服务概述之架构演变
  • 数据分区------《Designing Data-Intensive Applications》读书笔记9
  • MySQL数据库锁定机制
  • mybatis架构分析
  • SQL必知必会笔记
  • 栈------表达式求值
  • UFPS入门: Unity FPS 教程
  • [PHP内核探索]PHP中的哈希表
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [Vue CLI 3] 配置解析之 css.extract
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • JavaScript对象详解
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • node 版本过低
  • Yeoman_Bower_Grunt
  • 对象管理器(defineProperty)学习笔记
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • Hibernate主键生成策略及选择
  • Nginx实现动静分离
  • #Linux(Source Insight安装及工程建立)
  • (09)Hive——CTE 公共表达式
  • (3)STL算法之搜索
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (7)STL算法之交换赋值
  • (Forward) Music Player: From UI Proposal to Code
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (四)鸿鹄云架构一服务注册中心
  • (一)Java算法:二分查找
  • (转)nsfocus-绿盟科技笔试题目
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .gitignore
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net web项目 调用webService
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • @property @synthesize @dynamic 及相关属性作用探究
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [Android]How to use FFmpeg to decode Android f...
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [C#] 我的log4net使用手册
  • [C#]手把手教你打造Socket的TCP通讯连接(一)