У меня есть форма с несколькими select
как Dropdown
компонентами, и я хочу, чтобы обработчик onChange
обрабатывал их индивидуально. Как я могу это сделать?
Dropdown
генерируется динамически в соответствии с количеством вопросов из базы данных, поэтому будет нелепо писать обработчик onChange
для каждого Dropdown
(например, 30 вопросов)
компонент
const Dropdown = props => {
const { title, id, onChange, noSelection, options, value } = props;
return (
<div className="form-group">
<label className="control-label" htmlFor={id}>
{title}
</label>
<select
className="form-control"
name={id}
id={id}
onChange={onChange}
value={value}
>
{noSelection && <option defaultValue="" />}
{options.map(option => (
<option value={option} key={option}>{option}</option>
))}
</select>
</div>
);
};
export default Dropdown;
class Form extends Component {
constructor() {
super();
this.state = {
noSelection: true,
value,
};
this.handleSelect = this.handleSelect.bind(this);
}
handleSelect(event) {
let target = event.target;
let value = target.value;
this.setState({
noSelection: !this.state.noSelection,
value,
});
}
render() {
return (
<div className="care-sub">
<Dropdown
title="Are a developer wanting to become a programmer?"
id="select-care-leaver"
onChange={this.handleSelect}
noSelection={this.state.noSelection}
options={['Yes', 'No']}
value={this.state.value}
/>
<Dropdown
title="Do you have experience with React"
id="select-care-estranged"
onChange={this.handleSelect}
noSelection={this.state.noSelection}
options={['Yes', 'No']}
value={this.state.value}
/>
</div>
);
}
}
export default Form
Я ожидаю, что каждый Dropdown
- onChange
индивидуально, когда пользователь взаимодействует с ними и не изменяет другие Dropdowns
и не пишет повторных обработчиков для каждого из них.