In this line {({languages}, {add, remove}) => ....
I am trying to put languages
from state. But I have a problem referencing the state. The message .map is not a function
appears. After pressing Add another languages
, more inputs should appear with the possibility of choosing another language. I use library antd
.
Code here: https://stackblitz.com/edit/react-ycty22
import React from "react";
import React, {useState} from 'react';
import {
Form,
Button,
Select,
Space
} from 'antd';
import { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons';
import 'antd/dist/antd.css';
const { Option } = Select;
const App = () => {
const [values, setValues] = useState({
birthCountries: ['England', 'Germany', 'France'],
birthCountry: '',
languages: [{name: "German", level: "B1"}]
});
const {languages, birthCountries} = values;
const Languages = () => {
const onFinish = values => {
console.log('Received values of form:', values);
};
return (
<Form name="dynamic_form_nest_item" onFinish={onFinish} autoComplete="off">
<Form.List name="users">
{({languages}, { add, remove }) => { //{languages} in this place I want to put languages
//from state
return (
<div>
{languages.map(language => (
<Space key={language.name} style= align="start">
<Form.Item
label="Language"
{...language}
name={[language.name, 'first']}
>
<Select defaultValue={language.name} onChange={}>
{birthCountries.map((birthCountry, index) => {
return <Option value={birthCountry} key={index}>{birthCountry}</Option>
})}
</Select>
</Form.Item>
<Form.Item
label="Level"
{...language}
name={[language.level, 'last']}
>
<Select defaultValue={language.level} onChange={}>
{birthCountries.map((birthCountry, index) => {
return <Option value={birthCountry} key={index}>{birthCountry}</Option>
})}
</Select>
</Form.Item>
<MinusCircleOutlined
onClick={() => {
remove(language.name);
}}
/>
</Space>
))}
<Form.Item>
<Button
type="dashed"
onClick={() => {
add();
}}
block
>
<PlusOutlined /> Add another Language
</Button>
</Form.Item>
</div>
);
}}
</Form.List>
</Form>
);
};
return (
<div>
{Languages()}
</div>
);
};
export default App;
from Retrieving data from state and displaying it in dynamic form in antd
No comments:
Post a Comment