react Ant Design 動(dòng)態(tài)生成表單,并帶驗(yàn)證

寫點(diǎn)雜記,寫這個(gè)文章原因是因?yàn)槲覍?duì)象要做這個(gè)功能,我們正好用到了特意拆寫成了1個(gè)簡(jiǎn)單的demo

import React, {Component} from 'react'
import {connect} from 'react-redux'
import { Switch,Form,Radio,Input ,Button} from 'antd';

let TestData = {
    "code": 0,
    "itemList": [{
        "itemId": 65,
        "itemName": "審核意見",
        "itemNameEn": "shyj",
        "type": "TEXT",
        "options": "",
        "optionsEn": "",
        "ifrequire": 1,
        "listOrder": 1,
        "val": ""
    }, {
        "itemId": 66,
        "itemName": "審核結(jié)果",
        "itemNameEn": "shjg",
        "type": "RADIO",
        "options": "PASS:通過\r\nNOT_PASS:不通過",
        "optionsEn": "NOT_PASS:Not Pass",
        "ifrequire": 1,
        "listOrder": 2,
        "val": ""
    }]
}

// @connect(
//     // 你需要啥屬性放到state里面
//     state => {
//         console.log(state)
//         return {num: state.counter.number}
//     },
//     {}
// )

@Form.create()
class AnalysisTree extends Component {
    componentDidMount() {
        console.log(TestData)
    }

    onChange =(value)=>{

    }
    handleSubmit = e => {
        e.preventDefault();
        this.props.form.validateFieldsAndScroll((err, values) => {
          if (!err) {
            console.log('Received values of form: ', values);
          }
        });
      };
    render() {
        const {getFieldDecorator } = this.props.form;
        return (
            <div id="analysisTree">
                        <Form onSubmit={this.handleSubmit}>

                          {
                                TestData.itemList.map((data,i)=>{
                                switch (data.type){
                                    case 'TEXT':
                                            return(
                                                <Form.Item label={data.itemName}>
                                                    {getFieldDecorator(JSON.stringify(data.itemId),{
                                                        rules: [{
                                                            required: true, 
                                                            message: '請(qǐng)?zhí)顚懻_的' + data.itemName}],
                                                    })(
                                                        <Input style={{ width: 230 }} />
                                                    )}
                                            </Form.Item>
                                            );
                                        case 'RADIO':
                                        return(
                                            <Form.Item label={data.itemName}>
                                                    {getFieldDecorator(JSON.stringify(data.itemId),{
                                                        rules: [{
                                                            required: true, 
                                                            message: '請(qǐng)?zhí)顚懻_的' + data.itemName}],
                                                    })(
                                                        <Radio.Group style={{ width: 230 }} onChange={this.onChange} >
                                                                <Radio  value={0}>完成</Radio>
                                                                <Radio  value={1}>未完成</Radio>
                                                        </Radio.Group>
                                                    )}
                                            </Form.Item>
                                        );
                                        default :
                                    return '';
                               }
                            })
                          }
                          <Form.Item>
                            <Button htmlType='submit'>提交</Button>
                          </Form.Item>
                        </Form>
            </div>
        )
    }
}

export default AnalysisTree

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Warning 1 這一周又快過去了,總覺得還是在原地踏步,周六準(zhǔn)備來一趟公司加個(gè)班。 其實(shí)我也很想和那些人一樣看...
    Little_L閱讀 299評(píng)論 0 0
  • 綠代表了什么,它不但是陽光的象征,也是我向往的顏色。 生活中,有很多綠色的美好的東西,比如參天的大樹;...
    如果相遇閱讀 225評(píng)論 0 2
  • 1. 早上媽媽叫起床,沒有情緒。早起習(xí)慣有進(jìn)步。 2. 中午吃飯很慢,不過吃了蔬菜和肉。挑食習(xí)慣有改正。 每天下午...
    hl越望越遠(yuǎn)閱讀 173評(píng)論 0 0

友情鏈接更多精彩內(nèi)容