首页 > 其他分享 >react-d3-tree自定义节点使用案例

react-d3-tree自定义节点使用案例

时间:2023-07-13 14:55:16浏览次数:40  
标签:事件处理 函数 自定义 tree 指定 d3 react 节点

react-d3-tree 主要 API 及其中文解释:

  1. Tree 组件的 props:这些 API 提供了丰富的配置选项,可以用来定制树的外观和行为。例如,可以使用 nodeSize 属性调整节点的大小,使用 pathFunc 属性绘制自定义的连线,使用 onClick 属性处理节点的点击事件等等。
  • data:树的数据对象。
  • zoomable:指定是否允许缩放树。
  • translate:指定树的偏移量,格式为{ x: number, y: number }。
  • orientation:指定树的方向,可以是"horizontal"或"vertical"。
  • separation:指定相邻节点之间的距离,可以是一个数值或一个函数。
  • nodeSize:指定每个节点的大小,可以是一个数值或一个函数。
  • pathFunc:指定绘制节点之间连线的函数。
  • depthFactor:指定节点深度的因素,用于计算节点之间的距离。
  • collapsible:指定是否允许折叠节点。
  • onClick:指定节点的点击事件处理函数。
  • onCollapse:指定节点折叠事件处理函数。
  • onExpand:指定节点展开事件处理函数。
  • renderCustomNodeElement:指定自定义节点元素的渲染函数。
  • Node 组件的 props:
  • nodeData:节点的数据对象。
  • classNames:节点的 CSS 类名。
  • textLayout:指定节点标签的布局,可以是"horizontal"或"vertical"。
  • circleRadius:指定节点圆圈的半径。
  • nodeSvgShape:指定节点形状的 SVG 路径。
  • foreignObjectProps:指定包含节点标签的 foreignObject 元素的 props。
  • nodeLabelComponent:指定节点标签的渲染函数。
  • onClick:指定节点的点击事件处理函数。
  • onRightClick:指定节点的右键点击事件处理函数。
  • onCollapse:指定节点折叠事件处理函数。
  • onExpand:指定节点展开事件处理函数。
  • Link 组件的 props:
  • linkData:连接两个节点的数据对象。
  • orientation:指定树的方向,可以是"horizontal"或"vertical"。
  • pathFunc:指定绘制连线的函数。
  • transitionDuration:指定连线动画的持续时间。
  1. react-d3-tree 的 renderCustomNodeElement 方法可以帮助您自定义渲染节点元素。这个方法包含了以下五个参数:
  • datum:当前节点的数据对象,由 react-d3-tree 的 Tree 组件传递给 Node 组件。
  • toggleNode:用于展开或收起节点的方法,只有在 shouldCollapseNeighborNodes 属性为 true 时才有效。
  • collapsed:表示当前节点是否已经折叠。
  • nodeProps:所有应该传递给节点的自定义属性都包含在这个对象中。
  • mouseEvent:包含当前鼠标事件的对象,可以用于处理鼠标事件。
  1. 案例
const foreignObjectProps = {
  width: nodeSize.x,
  height: nodeSize.y,
  x: -115,
  y: -40,
};
const handleNodeClick = (nodeData) => {
  console.log('点击node:', nodeData);
};
const renderForeignObjectNode = ({
  nodeDatum,
  toggleNode,
  foreignObjectProps,
  handleNodeClick,
}) => {
  return (
    <g>
      <foreignObject {...foreignObjectProps}>
        <div>...</div>
      </foreignObject>
    </g>
  );
};
<Tree
  key={depthNum}
  data={treeData}
  // translate={{ x: (window.innerWidth - 556) / 3, y: (window.innerHeight - 68) / 2 }}
  nodeSize={nodeSize} //节点尺寸
  initialDepth={depthNum} //层级
  depthFactor={300} //间距
  zoom={zoomScale}
  zoomable={true}
  scaleExtent={{ min: 0.6, max: 1.5 }}
  pathFunc="step"
  renderCustomNodeElement={(rd3tProps) =>
    renderForeignObjectNode({
      ...rd3tProps,
      foreignObjectProps,
      handleNodeClick,
    })
  }
  separation={{ siblings: 1.2, nonSiblings: 1.2 }}
  collapsible
  orientation={'horizontal'}
/>;

标签:事件处理,函数,自定义,tree,指定,d3,react,节点
From: https://www.cnblogs.com/yijianwei/p/17550466.html

相关文章

  • IIS Express 无法识别自定义处理程序映射问题
    我的一个项目中,使用了自定义的文件类型(实际上就是普通的html,只不过自定义了后缀,且非静态文件),本地部署在IIS10.0后,添加处理程序映射,指定对应的aspnet_isapi后,访问正常,但代码调试的时候,出现错误。刚开始一直认为时iisexpress未能识别处理程序映射,无论是在项目的applicationhost.c......
  • WPF开发中ReactiveUI.Fody的使用
    前面的开发一般我会使用PropertyChanged.Fody,但ReactiveUI.Fody也能实现类似的功能。安装Nuget包Install-PackageReactiveUI.FodyFodyWeavers.xml文件:<Weaversxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"......
  • SpringCloud 之OpenFeign 自定义配置和使用/自定义拦截器
    转:SpringCloud之OpenFeign自定义配置和使用/自定义拦截器   ......
  • DevExpress WinForms TreeList控件,让业务数据展示更清晰!(一)
    DevExpressWinForms的TreeList控件是一个功能齐全、数据感知的TreeView-ListView的混合体,它可以以树形、网格或两者结合的形式显示数据信息。无论是数据绑定模式还是非绑定模式,都具有完整的数据编辑支持。PS:DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有......
  • react 内容
    1、初始安装react+ts npx create-react-appmy-app  npxcreate-react-appreact-ts --templatetypescript 安装为ts2、安装好react后面加上ts 2.1tsc--init 生产tsconfig.js{  "compilerOptions": {    "target": "es5" /**指定ECMAScrip......
  • APUE-signal-自定义信号
    [Linux定义信号的一些细节处理-自定义信号变量]https://blog.csdn.net/renlonggg/article/details/78309662#defineMY_SINGL_1(SIGRTMIN+1)/*信号函数,发送接受*/voidsignal_handler(intsignalnum){printf("Getsignal%d.\n",signalnum);}voidsigna......
  • CF884G Tree Wights
    CF884GTreeWights给定一棵\(n\)个点的树,给定\(d_1,d_2,\cdots,d_{n-1}\),其中\(d_i\)表示\(i\)到\(i+1\)在树上简单路径的距离,问能否构造每条边的边权都是正整数,并构造一种解。\(2\len\le10^5\),\(1\led_i\le10^{12}\)。本题难点在于两次转化。首先,如果题目中......
  • Java TreeMap 介绍与使用
    介绍TreeMap是Java集合框架中的一个类,它实现了SortedMap接口,可以存储键值对,并按照键的自然顺序或者指定的比较器进行排序。TreeMap的底层是一棵红黑树,这是一种自平衡的二叉搜索树,可以保证在插入,删除,查找等操作中的时间复杂度为O(logn)。使用要使用TreeMap,我们需要导入......
  • C# winfrom 自定义一个多选下拉控件MultiCombobox
    先看效果图:下拉框可自由拖动大小,内部checkbox会自动换行。主要代码片段自定义控件MultiComboboxCtrl1publicpartialclassMultiComboBoxCtrl:UserControl2{3MyCheckboxListCtrlcheckBoxListCtrl;4publiceventAction<string>Selec......
  • css 自定义动态排列
    需求就是显示一批头像,正常排列,很简单吧!用弹性盒子再加上允许换行,就解决了吗?问题是:头像之间有间隔,就需要加margin-right,问题来了本行最后一个盒子的空隙大了,正好能放下一个头像,这时肯定去掉margin.(这里设定最后一个盒子空隙大,当然也可能正好或者多一点点)。头像容器宽度不确定,......