IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> react antd form 组件封装 -> 正文阅读

[JavaScript知识库]react antd form 组件封装

?项目目录结构

?

1、app.js


import FormCom from './components/FormCom'
import './App.css'

function App() {

  const items = [
    {
      type: 'Input',
      label: '部门名称',
      name: 'name',
      rules: [{ required: true }]
    },
    {
      type: 'Select',
      label: '行政区划',
      name: 'cityCode',
      rules: [{ required: true }],
      options: [
        { label: '北京', value: 156120000 },
        { label: '天津', value: 156130000 },
        { label: '上海', value: 156140000 }
      ]
    },
    {
      type: 'DatePicker',
      label: '创建时间',
      name: 'createTime',
      rules:[{ required: true}],
    }
  ];

    return (
        <div className="App">
          <FormCom items={items}/>
        </div>
    );
}
export default App;

2、FormCom.js

import React from 'react'
import { Form, Button } from 'antd'
import InputElem from './InputElem'
import SelectElem from './SelectElem'
import DatePickerElem from './DatePickerElem'

const FormCom = (props) => {
    const { items } = props;

    const [form] = Form.useForm();

    // 检测是否存在标单项
    if (!items || (items && items.length === 0)) {
        return null;
    }

    const formItems = items.map(item => {
        const { type, name } = item;
        let Component = null;

        switch (type) {
            case 'Input':
                Component = <InputElem item={item} key={name}/>
                break;
            case 'Select':
                Component = <SelectElem item={item} key={name} />
                break;
            case 'DatePicker':
                Component = <DatePickerElem item={item} key={name} />
                break
            default:
                break;
        }

        return Component;
    })

    // 重置
    const onReset = () => {
        form.resetFields();
    };

    //提交
    const onSubmit = (fieldsValue) => {
        const values = {
            ...fieldsValue,
            'createTime': fieldsValue['createTime'].format('YYYY-MM-DD HH:mm:ss'),
        }
        console.log(values);
    }

    return (
        <Form form={form} onFinish={onSubmit} >
            {formItems}
            <Form.Item>
            <Button type="primary" htmlType="submit">
                提交
            </Button>
            </Form.Item>
            <Button htmlType="button" onClick={onReset}>
                重置
            </Button>
        </Form>
    )
}

export default FormCom

3、InputElem.js

import React from 'react'
import {Input, Form} from 'antd'

const InputElem = (props => {
    const { item } = props;
    const { label, name, rules } = item;
    return (
        <Form.Item name={name} label={label} rules={rules}>
            <Input />
        </Form.Item>
    )
})

export default InputElem

4、SelectElem.js

import React from 'react'
import { Select, Form } from 'antd'

const { Option } = Select;

const SelectElem = (props) => {
    console.log(props);
    const { item: { name, label, rules, options } } = props;

    const optionItems = options.map(option => {
        const { label, value } = option;
        return <Option value={value} key={label}>{label}</Option>
    })

    return (
        <Form.Item name={name} label={label} rules={rules}>
            <Select>
                {optionItems}
            </Select>
        </Form.Item>
    )
}

export default SelectElem

5、DatePickerElem.js

import React from 'react'
import { Form, DatePicker } from 'antd';

const DatePickerElem = (props) => {
    const { label, name, rules } = props.item;
    return (
        <Form.Item label={label} name={name} rules={rules}>
          <DatePicker showTime format="YYYY-MM-DD HH:mm:ss" />
        </Form.Item>
    )
}

export default DatePickerElem

6、结果展示

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:04:45  更:2021-07-15 16:06:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/28 12:02:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码