Попытка получить доступ к Bootstraps, выберите значение формы, используя React props. Это то, что я пробовал до сих пор, но он не сохраняет значение параметров.
Пример кода:
class BottomBar extends React.Component {
constructor(props) {
super(props);
this.state = {
hidden: true,
items: [],
text: '',
priority: ''
};
this.handleClick = this.handleClick.bind(this);
this.handleChangeEvent = this.handleChangeEvent.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
this.handlePriority = this.handlePriority.bind(this);
};
handleChangeEvent(e) {
this.setState({text: e.target.value});
}
handlePriority(t) {
this.setState({priority: t.target.value});
}
handleSubmit(e) {
e.preventDefault();
if (!this.state.text.length) {
return;
}
const newItem = {
text: this.state.text,
id: Date.now(),
priority: this.state.priority
};
this.setState(state => ({items: state.items.concat(newItem), text: '', priority: ''}));
console.info(newItem);
}
handleClick(t) {
i++;
if (i === 1) {
this.setState({hidden: false});
} else if (i === 2) {
this.setState({hidden: true});
i = 0;
}
}
render() {
const { classes } = this.props;
return(
<React.Fragment>
<AddCard items = {this.state.items} id = {this.state.id} priority = {this.state.priority} item = {this.state.item}/>
<CssBaseline />
<AppBar position = "fixed" color = "primary" className = {classes.appBar}>
{!this.state.hidden ? <TodoList text = {this.state.text} handlePriorty = {this.handlePriorty} priority = {this.state.priority} handleSubmit = {this.handleSubmit} items = {this.state.items} handleChangeEvent = {this.handleChangeEvent}/> : null}
<Toolbar className = {classes.toolbar}>
<IconButton color = "inherit" aria-label = "Open drawer">
<MenuIcon />
</IconButton>
<a href = "#" onClick = {this.handleClick}>
<Button variant = "fab" color = "secondary" aria-label = "Add" className = {classes.fabButton}>
<AddIcon />
</Button>
</a>
<div>
<IconButton color = "inherit">
<SearchIcon />
</IconButton>
<IconButton color = "inherit">
<MoreIcon />
</IconButton>
</div>
</Toolbar>
</AppBar>
</React.Fragment>
);
}
}
class TodoList extends React.Component {
render() {
return(
<div className = "container">
<form onSubmit = {this.props.handleSubmit}>
<div className = {"form-group"}>
<label htmlFor = {"title"}>Enter A Task Title</label>
<input value = {this.props.text} onChange = {this.props.handleChangeEvent} type = "text" className = {"form-control"} id = "title" rows = "3"></input>
</div>
<div className = {"form-group"}>
<label htmlFor = {"exampleFormControlSelect1"}>Example select</label>
<select onChange = {this.props.handlePriority} className = {"form-control"} id = "exampleFormControlSelect1">
<option value = {this.props.priority} onChange = {this.props.handlePriority}>Low Priority</option>
<option value = {this.props.priorty} >Medium Priority</option>
<option value = {this.props.priorty} >High Priority</option>
<option value = {this.props.priorty} >Important</option>
<option value = {this.props.priorty} >Very Important</option>
</select>
</div>
<button className = {"btn btn-primary btn-custom"}>Add : {this.props.items.length + 1}</button>
</form>
</div>
);
}
}
Мой код содержит два класса, один из которых устанавливает сохраненные значения в состояниях, а мой второй класс принимает эти состояния через реквизиты. Мой текстовый ввод работает нормально, но мой селектор select / options, похоже, не сохраняет выбранное значение.
Вывод:
Спасибо за конструктивный отзыв.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я настоятельно рекомендую вам разбить код на более мелкие функции.
В частности, я бы порекомендовал class component в качестве оболочки и function components для ваших узлов select и option.
function component для option node.const Option = ({ value, description }) => (
<option value = {value}>{description}</option>
);
Как видите, он принимает 2 аргумента: value и description. Не стесняйтесь добавлять свои собственные.
function component для нашего select node.const SelectBox = ({ children, onChange, value }) => (
<select onChange = {onChange} value = {value}>
{children}
</select>
);
class App extends React.Component {
state = {
value: 2
};
handleChangeEvent = e => {
this.setState({ value: e.target.value });
};
render() {
return (
<div className = "App">
<SelectBox onChange = {this.handleChangeEvent} value = {this.state.value}>
<Option value = "1" description = "First Item" />
<Option value = "2" description = "Second Item" />
<Option value = "3" description = "Third Item" />
</SelectBox>
</div>
);
}
}