前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Antd源码浅析(三)InputNumber组件 二

Antd源码浅析(三)InputNumber组件 二

作者头像
河马嘴不大
发布2022-12-24 12:17:49
1.1K0
发布2022-12-24 12:17:49
举报

前言

上篇我们讲了InputNumber组件的主要结构组成,本篇我们来分析,InputNumber组件的核心实现rc-input-number源码,即<RcInputNumber/>组件。虽然我们是浅析Antd组件,但本着专注、严谨的科学态度,这里河马君会为大家从Antd库入手,讲解背后的依赖库,深入到最底层,主要一个是为了理解代码,另一个是看看大家都用哪些开源库,加快开发进度。

目录结构

我们来看看rc-input-number的目录结构:

alt text
alt text

核心代码位于src 下:

alt text
alt text

结构很清晰,我们也可以从效果图分析:

alt text
alt text

其中的InputHandler组件,就是InputNumber右边的两个按钮组件,这里要说明一下,不同于Antd的源码,rc-input-number的源码使用普通的ES6编写,小伙伴们阅读起来应该会比较流畅,那我们首先分析一下InputHandler组件

InputHandler组件

代码不多,直接贴出:

代码语言:javascript
复制
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import Touchable from 'rmc-feedback';

class InputHandler extends Component {
  render() {
    const {
      prefixCls, disabled, ...otherProps,
    } = this.props;
    return (
      <Touchable
        disabled={disabled}
        activeClassName={`${prefixCls}-handler-active`}
      >
        <span {...otherProps} />
      </Touchable>
    );
  }
}

InputHandler.propTypes = {
  prefixCls: PropTypes.string,
  disabled: PropTypes.bool,
  onTouchStart: PropTypes.func,
  onTouchEnd: PropTypes.func,
  onMouseDown: PropTypes.func,
  onMouseUp: PropTypes.func,
  onMouseLeave: PropTypes.func,
};

export default InputHandler;

这里对于rmc-feedback大家可能比较陌生,rmc-feedback是一个处理active状态的库,也适用于移动端,只需要传入active状态时的className或者style,这里用在InputHandler组件中,就是处理在用户点击数字加减时的状态

现在我们来看看rc-input-number中InputHandler的主体:

alt text
alt text
alt text
alt text

这里我们能够清晰的看到主体结构内的函数,感受到Antd的同学代码很整齐,首先是类型校验和默认值,然后是生命周期函数,接着是事件处理,最后是自定义函数和render,所以大家在开发中也可以按照这样的顺序写代码,达成统一的规范,方便他人阅读

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 目录结构
  • InputHandler组件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档