在 react js 中动态设置 antd 输入默认值

Dynamically set antd input default value in react js

提问人:etranz 提问时间:10/24/2023 更新时间:10/24/2023 访问量:43

问:

我正在尝试将数据传递给 antd 表单并将数据值设置为输入表单的默认值,但输入上没有显示任何内容。

我从 url 中获取 id,并使用 id 从后端获取数据,并将其作为默认值传递给表单。

卡组件正下方的 winningTags.name 显示名称,但传递给表单的名称不显示。

const EditWinningTags = () => {

    const { id } = useParams()
    const [winningTags, setWinningTags] = useState([])

    useEffect(() => {
        const getDraws = async () => {
            const res = await CategoryServices.getSingleWinningTags(id);
            console.log(res.data.data.name)
            if (res.data.data) setWinningTags(res.data.data)

        }
        getDraws()
    }, []);


    const [form] = Form.useForm();

    const onFinish = (values) => {
        console.log(values);
    };
    const onReset = () => {
        form.resetFields();
    };
    console.log("name ", winningTags.name)
    return (
        <div className="d-flex justify-content-center align-items-center" style={{ "height": "70vh" }}>
            <Card title="Edit Winning Tag" style={{ width: 600 }}>
                {winningTags && winningTags.name}
                <Form
                    {...layout}
                    form={form}
                    initialValues={{
                        name: winningTags && winningTags.name,
                        stake_price: winningTags && winningTags.stake_price,
                    }}
                    name="control-hooks"
                    onFinish={onFinish}
                    style={{
                        maxWidth: 600,
                    }}
                >
                    <Form.Item
                        name="name"
                        label="Name"
                        rules={[
                            {
                                required: true,
                            },
                        ]}
                    >
                        <Input />
                    </Form.Item>
                    <Form.Item
                        name="stake_price"
                        label="Stake Price"
                        rules={[
                            {
                                required: true,
                            },
                        ]}
                    >
                        <Input type='text' values="Mon" />
                    </Form.Item>
                    <Form.Item {...tailLayout}>
                        <Button type="primary" htmlType="submit">
                            Submit
                        </Button>
                    </Form.Item>
                </Form>
            </Card>
        </div>
    )
}
reactjs 表单 输入 antd 默认值

评论

1赞 Muhammad Nouman Rafique 10/24/2023
initialValues行不通。它将在组件渲染时首次工作。使用 hook 在收到响应时设置值:。在您的情况下,您可能不需要状态来存储响应数据formform.setFieldsValue(res.data.data)
0赞 Gabriele Petrioli 10/25/2023
解决方案 A) 在完成之前不要呈现表单。解决方案 B) 将 a 添加到表单并在完成后更新它(实际上重新挂载表单getDrawskeygetDraws)

答: 暂无答案