likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 10

Tree

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

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

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

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

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

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

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

NodeList

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

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

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

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

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

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

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

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

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

VirtualList

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

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

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

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

TreeContext

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

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

TreeContext 包含了树组件全部状态

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

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

本文完,感谢阅读。

转载自:https://juejin.cn/post/7285971524687249443
评论
请登录