SEMI DESIGN 源码学习(二)输入框
Input 组件位于 packages/semi-ui/input/index.tsx
, 它继承于 BaseComponent
。
值得关注的是 foundation!: InputFoundation;
属性
constructor(props: InputProps) {
/// ...
this.foundation = new InputFoundation(this.adapter);
}
InputFoundation
继承于 BaseFoundation
, 它需要传入一个 InputAdapter
用来管理输入框的值,以及处理输入框的事件
后面的方法可以看出组件的事件都是交给 this.foundation
处理的
以下是渲染输入框元素的方法
最后返回一个 div
标签,包括其他的元素
文件默认导出 ForwardInput
,一个带有 forwardRef
属性的 Input
inputGroup
是输入框组合,位于packages/semi-ui/input/inputGroup.tsx
。
TextArea
组件与 Input
类似,多了用于处理 resize
事件的 _resizeListener
方法,最后渲染的是一个 textarea
标签
转载自:https://juejin.cn/post/7284069963122638907