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 包含了树组件全部状态

本文完,感谢阅读。

相关推荐
草梅友仁1 小时前
草梅 Auth 1.6.0 发布密码强度组件 Twilio 短信支持 | 2025 年第 36 周草梅周报
前端·开源·github
正义的大古2 小时前
OpenLayers常用控件 -- 章节七:测量工具控件教程
前端·javascript·vue.js·openlayers
Hashan2 小时前
深入理解:Webpack编译原理
前端·webpack
雲墨款哥2 小时前
一个前端开发者的救赎之路-JS基础回顾(五)-数组
前端·javascript·面试
朱程2 小时前
深入JS(一):手写 Promise
前端·javascript
Hierifer3 小时前
跨端技术:浅聊双线程原理和实现
前端
FreeBuf_3 小时前
加密货币武器化:恶意npm包利用以太坊智能合约实现隐蔽通信
前端·npm·智能合约
java水泥工4 小时前
基于Echarts+HTML5可视化数据大屏展示-图书馆大屏看板
前端·echarts·html5
EndingCoder4 小时前
Electron 性能优化:内存管理和渲染效率
javascript·性能优化·electron·前端框架
半夏陌离4 小时前
SQL 实战指南:电商订单数据分析(订单 / 用户 / 商品表关联 + 统计需求)
java·大数据·前端