SEMI DESIGN 源码学习(八)树形控件

Tree

Tree 组件位于 packages/semi-ui/tree/index.tsx

静态属性 contextType 是框架全局 configProvider 的类型,用来获取应用全局状态。

Tree 使用 foundation: TreeFoundation 属性调用业务方法

它的 adapter 实现了 foundation 所需的方法。

NodeList

树组件的 renderNodeList 是渲染核心方法,在不使用虚拟列表的情况下它返回一个 NodeList 组件

NodeList 使用 renderTreeNode 方法渲染树的子节点

renderTreeNodeTree 组件本身的方法,遍历 mapData 返回 TreeNode 组件渲染树节点

TreeNode 组件通过 level 属性确定节点的层级

VirtualList

当使用虚拟列表的时候 renderNodeList 返回一个 AutoSizer 组件, 里面包裹了一个VirtualList

option 属性同样使用 renderTreeNode 方法渲染子节点

TreeContext

最后 Treerender 方法返回一个 TreeContext.Provider,用来管理整个树组件的状态

TreeContext 包含了树组件全部状态

本文完,感谢阅读。

相关推荐
ZzMemory几秒前
深入理解JS(八):事件循环,单线程的“一心多用”
前端·javascript·面试
FogLetter2 分钟前
玩转Canvas:从静态图像到动态动画的奇妙之旅
前端·canvas
llq_3503 分钟前
解决 Linux 部署中的文件大小写问题
前端
我想说一句5 分钟前
bubu智聘App亮点详解(2) Coze工作流接入
前端·前端框架·trae
llq_3506 分钟前
配置 Git 使其大小写敏感:解决文件名大小写变更的识别问题
前端
猫葫芦14 分钟前
微信【跳转】相关API详细整理,含注意事项
前端
蓝色笙箫本尊18 分钟前
truffle安装
前端
默默地离开18 分钟前
Tailwind CSS 4,把样式这事儿交给“类名”就好
前端·css
顾辰逸you18 分钟前
React+Ts项目(网易云音乐)五
react.js
子洋19 分钟前
OrbStack 安装 Ubuntu 并开启 SSH 与 Root 登陆
linux·前端·ubuntu