Событие onChange для компонента выбора antd не предоставляет объект события, оно предоставляет фактическое значение, которое было выбрано.
Вместо этого измените свой метод handleChange на
handleChange(name, value) {
this.setState({
[name]: value
});
}
а затем измените выбранную функцию onChange на
onChange={value => this.handleChange("sport", value)}
Итак, он хотел бы, чтобы это было
<Select
name="sport"
value={this.state.sport}
style={{ width: 120 }}
onChange={value => this.handleChange("sport", value)}
>
<Option value="jooks">Jooks</Option>
<Option value="jõud">Jõud</Option>
<Option value="crossfit">Crossfit</Option>
<Option value="kardio">Kardio</Option>
</Select>
Самый простой способ отладить эту ситуацию - записать в консольный журнал значение события, переданное в из события onChange. Это показало бы, что на самом деле было выбрано значение, а не объект события.
EDIT:
Я не уверен, что это было случайно, но теги <Form>
и <FormItem>
отсутствовали. Я добавил полный класс ниже
import React from "react";
import { Form, Input, Button, Select } from "antd";
import axios from "axios";
const FormItem = Form.Item;
const { Option } = Select;
export default class CustomForm extends React.Component {
constructor(props) {
super(props);
this.state = { sport: "" };
this.handleChange = this.handleChange.bind(this);
this.handleFormSubmit = this.handleFormSubmit.bind(this);
}
handleChange(name, value) {
this.setState({
[name]: value
});
}
handleFormSubmit = value => {
console.log(this.state);
};
render() {
return (
<div>
<Form onFinish={this.handleFormSubmit}>
<FormItem>
<Select
name="sport"
value={this.state.sport}
style={{ width: 120 }}
onChange={value => this.handleChange("sport", value)}
>
<Option value="jooks">Jooks</Option>
<Option value="jõud">Jõud</Option>
<Option value="crossfit">Crossfit</Option>
<Option value="kardio">Kardio</Option>
</Select>
</FormItem>
<FormItem>
<Button type="primary" htmlType="submit" shape="round">
{this.props.btnText}
</Button>
</FormItem>
</Form>
</div>
);
}
}