#reactjs #fetch
#reactjs #выборка
Вопрос:
Например, я хочу извлекать данные при нажатии кнопки. куда я должен поместить свою функцию выборки, я обычно помещаю свою функцию выборки в функцию обработчика.
// in my component
async handleButton(){
if(!this.state.data){
let data = await fetchFunction();
this.setState({
state_data : data
});
}
}
render(){
<button onClick={this.handleButton}>fetch data</button>
}
но в react жизненный цикл предоставляет componentDidUpdate для извлечения данных. ниже приведен контент в документе react, описывающий componentDidUpdate.
Это также хорошее место для выполнения сетевых запросов, если вы сравниваете текущие реквизиты с предыдущими реквизитами (например, сетевой запрос может не потребоваться, если реквизиты не изменились).
И я думаю, что документ означает, что я должен писать так?
// in my component
handleButton(){
if(!this.state.data){
this.setState({
need_fetch_data : true
});
}
}
async componentDidUpdate(){
if(this.state.need_fetch_data amp;amp; !this.state.data){
let tmp = await fetchFunction();
this.setState({
data : tmp;
})
}
}
render(){
<button onClick={this.handleButton}>fetch data</button>
}
и я думаю, что второй способ будет отображаться на один раз больше, чем первый метод. Так что это не нормально.
спасибо за любой ответ!!
Комментарии:
1. Зависит от того, что имеет смысл для их варианта использования. Запускайте выборку данных в обработчике, если вы хотите получить данные в ответ на определенное событие. Инициируйте выборку данных
componentDidUpdate
, если вы хотите получить их в ответ на обновление состояния / реквизита.