Проблемы с сохранением изменений с помощью функции asyn c при вызове из обработчика событий onClick. У меня есть функции, которые я вызываю:
retrieveData = async () =>{
try {
console.log(1)
console.log(this.state.ID)
const url = this.baseUrl + "api/" + this.state.ID
let response = await fetch(url, {mode: "cors"})
const data = await response.text()
this.setState({testVal: data})
console.log(data)
} catch (e) {
console.error(e)
}
}
Вышеупомянутая функция работает, когда я помещаю ее содержимое в componentDidMount () и жестко кодирую идентификатор состояния. Но не тогда, когда я пытаюсь вызвать функцию извлеченных данных таким образом, поэтому я предполагаю, что в следующем фрагменте кода ошибка.
render() {
return(
<div>
<div>
<form>
<label>
ID:
<input type="text" onChange={e => this.setState({ID: e.target.value})}/>
</label>
<input type="submit" onClick={async () =>{await this.retrieveData();}}/>
</form>
</div>
<div>
{this.state.ID}
{this.state.testVal}
</div>
</div>
);
}
Я новичок в reactJS, поэтому я уверен, что это что-то просто. Когда я нажимаю кнопку отправки, я вижу, как консоль выдаёт 1, затем ID, который я только что ввел, а затем оба сразу исчезают. Когда я проверяю, происходит ли fecth, я не вижу никаких вызовов api, как при тестировании с жестко запрограммированным URL-адресом с componentDidMount (), но я хочу иметь возможность вводить данные пользователя, просто немного не знаю, как это сделать. Я считаю, что проверил практически все ТАК вопросы, которые могу найти по этому поводу, так что я действительно потерялся. Если потребуется дополнительная информация, дайте мне знать, спасибо.