JsonTreeView.tsx

JsonTreeView.tsx

基本信息

  • 类型: React 组件 (自定义)
  • 路径: ./src/components/ui/json-tree-view.tsx

功能描述

JSON 树形视图组件,以可折叠的树形结构展示 JSON 数据。支持展开/折叠全部、路径追踪、语法高亮等功能。

导出内容

  • JsonTreeView - JSON 树形视图组件
  • JsonTreeViewWrapper - 包装组件(处理 JSON 字符串解析)

Props 接口

JsonTreeView

属性类型必填默认值说明
dataunknown-JSON 数据
classNamestring-自定义CSS类名
fontSize`'xs' \'sm' \'base'`'xs'字体大小
maxDepthnumber10最大展开深度
onExpandAllRef`React.MutableRefObject<(() => void) \undefined>`-展开全部函数的 ref
onCollapseAllRef`React.MutableRefObject<(() => void) \undefined>`-折叠全部函数的 ref

JsonTreeViewWrapper

属性类型必填默认值说明
contentstring-JSON 字符串
classNamestring-自定义CSS类名
fontSize`'xs' \'sm' \'base'`'xs'字体大小
onExpandAllRef`React.MutableRefObject<(() => void) \undefined>`-展开全部函数的 ref
onCollapseAllRef`React.MutableRefObject<(() => void) \undefined>`-折叠全部函数的 ref

依赖

  • lucide-react - 图标库 (ChevronRight, ChevronDown)
  • @/lib/utils - 工具函数 (cn)

使用示例

import { JsonTreeView, JsonTreeViewWrapper } from "@/components/ui/json-tree-view";
import { useRef } from "react";

// 使用数据对象
const data = { name: "John", age: 30, hobbies: ["reading", "gaming"] };
<JsonTreeView data={data} fontSize="sm" />

// 使用 JSON 字符串
const jsonString = '{"key": "value", "nested": {"a": 1}}';
<JsonTreeViewWrapper content={jsonString} />

// 带展开/折叠控制
const expandRef = useRef<(() => void) | undefined>(undefined);
const collapseRef = useRef<(() => void) | undefined>(undefined);

<JsonTreeView
  data={largeData}
  onExpandAllRef={expandRef}
  onCollapseAllRef={collapseRef}
/>
<Button onClick={() => expandRef.current?.()}>展开全部</Button>
<Button onClick={() => collapseRef.current?.()}>折叠全部</Button>
← 返回目录