Я думаю, что знаю, что мне нужно сделать, чтобы моя searchLocationChange
функция заработала, но я не совсем уверен, как это сделать. Пожалуйста, прости за отступы, мы немного справились с WYSIWYG от StackOverflow!
Вот мои настройки родительского компонента:
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
forecasts: [],
location: {
city: '',
country: '',
},
selectedDate: 0,
searchText: '',
};
this.handleForecastSelect = this.handleForecastSelect.bind(this);
this.searchLocationChange = this.searchLocationChange.bind(this);
}
}
С этой конкретной функцией я хочу заставить работать:
searchLocationChange() {
console.log(this.state.searchText);
Axios.get('https://mcr-codes-weather.herokuapp.com/forecast', {
params: {
city: this.state.searchText,
},
})
.then((response) => {
this.setState({
forecasts: response.data.forecasts,
location: {
city: response.data.location.city,
country: response.data.location.country,
}
});
});
}
А в моем компоненте Child логика:
class SearchForm extends React.Component {
constructor(props) {
super(props);
this.state = {
searchText: '',
};
this.handleInputChange = this.handleInputChange.bind(this);
}
handleInputChange(event) {
const enteredText = event.target.value;
this.setState({
searchText: enteredText
});
}
render() {
return (
<span className="search-form">
<div className="search-form__input"><input type="text" value={this.state.searchText} onChange={this.handleInputChange} /></div>
<div className="search-form__submit"><button onClick={this.props.searchLocationChange}>Search</button></div>
</span>
);
}
}
Я понимаю, что пытаюсь обновить родительский компонент с помощью searchText из состояния дочернего компонента, но я не могу понять, что мне нужно изменить, чтобы это работало. У меня есть скрытое подозрение, что я нахожусь на 99% пути, и мне нужно всего лишь еще несколько строк, но я могу быть далеко?