antd radio和form提交冲突解决

本文介绍了一种基于React的计价模式选择组件实现方法,包括如何处理RadioGroup与getFieldDecorator之间的value冲突,并通过radioChange方法确保Radio按钮的正确选中状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<Row ref={this.valuationModel} className="custom-option">
    <Col span={18} offset={1}>
        <Item
            {...ItemArea}
            label='计价模式'

        >
            {
                getFieldDecorator('valuationModel',{
                    getValueFromEvent: this.radioChange
                })(
                    <RadioGroup onChange={this.radioChange}>
                        <Radio value='nums' key='1'>按数量计价</Radio>
                        <Radio value='car' key='2'>按每车计价</Radio>
                        <Radio value='mileage' key='3'>按里程数计价</Radio>
                        <Radio value='startMileage' key='4'>按起步里程数计价</Radio>
                        <Radio value='duringMileage' key='5'>按里程数区间计价</Radio>
                    </RadioGroup>
                )
            }
        </Item>
    </Col>
</Row>

 

radioChange = (e)=>{
    console.log(1111111)
    console.log(e.target.value)
    let t_valua = e.target.value
    this.setState({
        valuation: e.target.value,
    })
    return t_valua
};

RadioGroup中的value会和getFieldDecorator中的value冲突,getValueFromEvent重新绑定就可以直接使用RadioGroup中的操作了;记得在radioChange 方法中returen赋值前的value,否则radio不会高亮

如果你想在 Ant Design 的弹窗中使用 Form 组件并提交表单数据,可以按照以下步骤操作: 1. 在弹窗中使用 Form 组件。可以使用 `Form.create()` 方法创建一个高阶组件,将 Form 组件的 props 中注入一个 `form` 对象,该对象包含了表单的操作方法属性。 ``` import { Form, Input, Modal } from 'antd'; const MyForm = Form.create({ name: 'my_form' })(props => { const { visible, onCancel, onCreate, form } = props; const { getFieldDecorator } = form; return ( <Modal visible={visible} title="Create a new item" onCancel={onCancel} onOk={onCreate} > <Form layout="vertical"> <Form.Item label="Name"> {getFieldDecorator('name', { rules: [{ required: true, message: 'Please input the name of the item!' }], })(<Input />)} </Form.Item> <Form.Item label="Description"> {getFieldDecorator('description')(<Input type="textarea" />)} </Form.Item> </Form> </Modal> ); }); ``` 2. 定义弹窗的显示状态以及处理弹窗的显示隐藏事件。 ``` import { useState } from 'react'; const MyFormContainer = () => { const [visible, setVisible] = useState(false); const handleCancel = () => { setVisible(false); }; const handleCreate = () => { const { form } = this.props; form.validateFields((err, values) => { if (err) { return; } // TODO: 处理表单数据的提交 console.log('Received values of form: ', values); form.resetFields(); setVisible(false); }); }; return ( <> <Button onClick={() => setVisible(true)}>Create</Button> <MyForm visible={visible} onCancel={handleCancel} onCreate={handleCreate} /> </> ); }; ``` 3. 在 `handleCreate` 函数中处理表单数据的提交。可以使用 `form.validateFields()` 方法验证表单数据,如果验证通过,则将数据提交给服务器。 ``` const handleCreate = () => { const { form } = this.props; form.validateFields((err, values) => { if (err) { return; } // 发送数据到服务器 fetch('/api/items', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(values), }).then(() => { form.resetFields(); setVisible(false); }); }); }; ``` 以上就是在 Ant Design 弹窗中使用 Form 组件并提交表单数据的完整代码示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值