likes
comments
collection
share

SEMI DESIGN 源码学习(三)选择器

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

Select 组件位于 packages/semi-ui/select/index.tsx, 一共 1467 行代码,看起来挺复杂的。

SEMI DESIGN 源码学习(三)选择器

照旧是一些属性接口的定义

SEMI DESIGN 源码学习(三)选择器

值得留意的是这里用了 typeinterface 两种关键字来定义,其中 type类型别名,用于给各种类型定义别名,让 TS 写起来更简洁、清晰。 interface接口,用于描述一个对象。

一般 使用组合或者交叉类型的时候,用 type, 要用类的 extends 或 implements 时,用 interface

类似于 InputSelect 组件同样有一个 foundation 属性,不过这里是 SelectFoundation

SEMI DESIGN 源码学习(三)选择器

同样是传入一个 adapter 用来管理内部值,处理事件,这样可以复用这一套逻辑。

SEMI DESIGN 源码学习(三)选择器

最后的渲染函数返回一个 Popover 组件

SEMI DESIGN 源码学习(三)选择器

内部判断是否使用 useCustomTrigger 再判断是否是多选。

SEMI DESIGN 源码学习(三)选择器

OptionOptionGroup 比较简单,就是普通的无状态组件。

SEMI DESIGN 源码学习(三)选择器

后面研究一下这个 adapter 模式,本文完。

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