У меня есть компонент класса следующим образом:
class App extends Component {
constructor(props){
super(props);
this.state = {
abc: '',
someQuery: ''
}
this.handleSubmit = this.handleSubmit.bind(this);
this.handleChange = this.handleChange.bind(this);
}
componentDidUpdate(){
fetch(`/someLink/${this.state.abc}`)
.then(response => {
return response.json();
}).then(data => {
this.setState({
someQuery: data.xxx
});
});
}
handleSubmit(e){
const target = e.target;
const value = target.value;
this.setState({
abc: value
})
e.preventDefault();
};
handleChange(e){
const target = e.target;
const value = target.value;
this.setState({
abc: value
});
};
render(){
return(
<form onSubmit={this.handleSubmit}>
<input name='abc' value={this.state.abc} onChange={this.handleChange} />
<input type="submit" value="Submit" />
</form>
<div>{this.state.abc} is currently accessing data from {this.state.someQuery}</div>
)
}
}
Как мне запускать componentDidUpdate()
каждый раз, когда я обновляю значение поля ввода и нажимаю кнопку отправки?
Выше приведен жизненный цикл, но из-за setState
в handleChange()
жизненный цикл также вызывается в тот момент, когда я что-то печатаю, и не ждет, пока нажата кнопка отправки.
Удаление setState
из handleChange()
делает значение поля ввода больше не редактируемым (косой тип в поле ввода).
Мне нужно значение поля ввода, добавленное к api link
в жизненном циклено я не могу найти правильный способ сделать это.