react 封装通用组件之form表单

react 常用组件API调用的模块化封装–form组件


工作中发现我们在做react后台管理系统的时候,会有大量重复的页面(如下图),比如form表单和table组件、以及接口通讯,新增修改modal等。虽然antd里面的组件已经很简便了,但是遇到众多功能类似的页面,每次都复制大量的代码还是会耗费很大的时间而且不易维护,看起来很不清爽,于是找了个时间就把他们做了二次封装。 尽量涵盖了大多数的业务。

form表单的封装

在这里插入图片描述

在这里插入图片描述

  1. 新建basicForm 表单组件
    - 在component中新建一个basicForm.js的表单,主要代码如下
    - 在这里插入图片描述
    - 以input、select为例
    -
    ```
 initFormList=()=>{
    const p = this;
    const formItemList = [];
    const { getFieldDecorator } = p.props.form;
    const { formList,extendFormList } = p.props;
    if (formList && formList.length > 0) {
    formList.forEach(item => {
        const {
        label,
        field,
        tree,
        type,
        initialValue,
        placeholder,
        width,
        name
        } = item;
   if (type === "INPUT") {
      const INPUT = (
        <FormItem key={field} label={label}>
        {getFieldDecorator(`${field}`,{
            initialValue, // true | false
        })(
            <Input style={{ width }} placeholder={placeholder} />
        )}
        </FormItem>
      );
      formItemList.push(INPUT);
    } else if (type === "SELECT") {
      const SELECT = (
        <FormItem label={label} key={field}>
        {getFieldDecorator(`${field}`,{
            initialValue, // true | false
        })(
          <Select style={{ width }} placeholder={placeholder}>
            {Utils.getOptionList(item.list, name)}
          </Select>
          )}
        </FormItem>
      );
      formItemList.push(SELECT);
 ```
- 对组件中的list进行遍历,将样式 key label field initialValue等内容开放出去
- 展开时的表单也是如此
  1. 在util中写通用方法比如格式化时间,处理redio、Checkbox的方法
    - 封住表单中会有对时间组件的时间格式化处理,对radio、Checkbox列表的处理,代码如下:
    ```
   if(fieldsValue.beginTime){
        fieldsValue.beginTime = Utils.formateDate(fieldsValue.beginTime)
    }
    

  formateDate(time) {
    if (!time) return '';
    const date = new Date(time);
    return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;
    }
  1. 页面中引用调用-- 如格式化时间

    formateDate(time) {
   	    if (!time) return '';
   	    const date = new Date(time);
   	    return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;
   	  },

主要结构如下:详细代码–> 在github中获取

在这里插入图片描述

完成后的界面

img1

链接地址:
网页地址

github 地址:
github

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值