JavaScript is required

节点-内容及样式1

自定义节点样式与树形布局

演示通过节点插槽使用 div+css 和 React 组件完全自定义节点外观,支持树形布局和多种节点类型。

自定义节点样式与树形布局

功能概述

本示例演示如何通过节点插槽使用 div+css 和 React 组件完全自定义节点外观。它使用树形布局,支持不同类型的节点(根节点、圆形、视频、按钮),并使用自定义组件渲染。

核心特性实现

树形布局配置

const graphOptions: RGOptions = {
    backgroundColor: 'rgb(101, 163, 13)',
    defaultLineColor: 'rgba(255, 255, 255, 0.6)',
    defaultNodeColor: 'transparent',
    defaultNodeBorderWidth: 0,
    defaultNodeShape: RGNodeShape.rect,
    defaultLineShape: RGLineShape.StandardCurve,
    defaultJunctionPoint: RGJunctionPoint.lr,
    layout: {
        layoutName: 'tree',
        from: 'left',
        treeNodeGapH: 200,
        treeNodeGapV: 30
    }
};

基于节点类型的渲染

const myJsonData: RGJsonData = {
    rootId: 'a',
    nodes: [
        { id: 'a', text: 'a', type: 'my-root', nodeShape: RGNodeShape.rect },
        { id: 'b', text: 'b', type: 'my-circle', nodeShape: RGNodeShape.circle },
        { id: 'b1', text: 'b1' },
        { id: 'c', text: 'c', type: 'my-video' },
        { id: 'c1', text: 'c1', type: 'my-button', nodeShape: RGNodeShape.rect, data: { buttonText: 'Button 1' } }
    ]
};

自定义节点内容组件

<RGSlotOnNode>
    {({ node }: RGNodeSlotProps) => (
        <MyNodeContent node={node} />
    )}
</RGSlotOnView>

MyNodeContent 组件处理渲染不同类型的节点,使用适当的样式和组件。

创意使用场景

组织层次结构:根节点显示公司徽标,部门主管使用圆形头像,员工使用详细卡片,操作节点显示为交互式按钮。

决策树:决策节点显示为带图标的菱形,结果节点使用矩形,叶节点显示为简单文本,操作节点呈现为可点击按钮。

技能树:技能类别使用大型标题节点,技能组显示为圆形图标,单个技能显示为卡片,锁定技能使用不同样式。

产品类别:类别节点使用大型横幅,子类别显示为圆形徽章,产品显示为带图像的详细卡片,促销商品具有特殊的按钮样式。

流程:开始/结束节点使用独特的形状,决策点显示为带图标的菱形,流程步骤使用矩形卡片,操作项呈现为交互式按钮。

文件系统导航:根文件夹使用大型标题样式,子文件夹显示为圆形图标,文件显示为带文件类型指示器的详细卡片,特殊文件夹具有独特的样式。

学习路径:课程模块使用大型标题节点,课程显示为圆形图标,主题显示为卡片,测验呈现为交互式按钮。