You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.1 KiB
52 lines
1.1 KiB
import React, { useState } from 'react';
|
|
import { Form, Input } from 'antd';
|
|
|
|
interface FieldData {
|
|
name: string | number | (string | number)[];
|
|
value?: any;
|
|
touched?: boolean;
|
|
validating?: boolean;
|
|
errors?: string[];
|
|
}
|
|
|
|
interface CustomizedFormProps {
|
|
onChange: (fields: FieldData[]) => void;
|
|
fields: FieldData[];
|
|
}
|
|
|
|
const CustomizedForm: React.FC<CustomizedFormProps> = ({ onChange, fields }) => (
|
|
<Form
|
|
name="global_state"
|
|
layout="inline"
|
|
fields={fields}
|
|
onFieldsChange={(_, allFields) => {
|
|
onChange(allFields);
|
|
}}
|
|
>
|
|
<Form.Item
|
|
name="username"
|
|
label="Username"
|
|
rules={[{ required: true, message: 'Username is required!' }]}
|
|
>
|
|
<Input />
|
|
</Form.Item>
|
|
</Form>
|
|
);
|
|
|
|
const App: React.FC = () => {
|
|
const [fields, setFields] = useState<FieldData[]>([{ name: ['username'], value: 'Ant Design' }]);
|
|
|
|
return (
|
|
<>
|
|
<CustomizedForm
|
|
fields={fields}
|
|
onChange={newFields => {
|
|
setFields(newFields);
|
|
}}
|
|
/>
|
|
<pre className="language-bash">{JSON.stringify(fields, null, 2)}</pre>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default App;
|
|
|