Дочерний класс Search
имеет форму ввода, которая ожидает какую-то строку для поиска (например: некоторая область в городе).Родительский компонент App
сохраняет искомое значение в состоянии, чтобы передать его в качестве реквизита другому методу (компонент Map
).
Проблема: когда я начинаю вводить в форму поиска, searchedValue
немедленно обновляется в родительском (obv из-за onSearchedInputChange
метода`) -
как заставить форму ждать, пока я нажму Enter
, прежде чем обновлять родительское состояние?
App.js (родительский)
class App extends React.Component {
state = {
searchedValue: "",
searchedResponse: null
};
handleSubmit = e => {
e.preventDefault();
...
};
onSearchedInputChange = searchedValue => {
this.setState({
searchedValue: searchedValue
});
};
Search.js (дочерний)
class Search extends Component {
handleSubmit = e => {
this.props.handleSubmit(e);
};
// pass callback to parent with searched field
handleSearch = e => {
if (e.key === "Enter") {
this.props.onSearchedInputChange(e.target.value);
}
};
render() {
const searchedValue = this.props.searchedValue;
return (
<div className="search">
<Form onSubmit={this.handleSubmit}>
<Form.Group controlId="searchForm" className="search-form">
<InputGroup>
<InputGroup.Prepend>
<FontAwesomeIcon icon={faSearch} className="search-icon" />
</InputGroup.Prepend>
<Form.Control
className="search-input"
type="text"
placeholder="Enter street or area..."
value={searchedValue}
name="search"
onChange={this.handleSearch}
/>
</InputGroup>
</Form.Group>
</Form>
</div>
);
}
}