reactjs - 我应该什么时候在反应的更新生命周期中获取数据?
问题描述
例如,我想在单击按钮时获取数据。我应该把我的 fetch 函数放在哪里,我通常把我的 fetch 函数放在处理函数中。
// 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>
}
但在反应中,lifeCycle 提供 componentDidUpdate 来获取数据。下面是描述 componentDidUpdate 的反应文档中的内容。
这也是进行网络请求的好地方,只要您将当前的 props 与以前的 props 进行比较(例如,如果 props 没有更改,则可能不需要网络请求)。
而且我认为那个文档意味着我应该这样写?
// in my component
handleButton(){
if(!this.state.data){
this.setState({
need_fetch_data : true
});
}
}
async componentDidUpdate(){
if(this.state.need_fetch_data && !this.state.data){
let tmp = await fetchFunction();
this.setState({
data : tmp;
})
}
}
render(){
<button onClick={this.handleButton}>fetch data</button>
}
而且我认为第二种方法会比第一种方法多渲染一次。所以不行。
感谢您的任何回答!
解决方案
推荐阅读
- java - 使用自定义关键字上传 Katalon 文件
- javascript - 如何快速启动重度事件动画?
- angular - Ng2SearchPipeModule 给出错误过滤器未找到
- reactjs - 折线图中的图例- google-charts-react
- c++ - 摆脱样板代码的想法
- python - 我们可以根据特定的词过滤数据吗?
- node.js - 如何将受 Jwt 保护的 Express.js Rest api 与 Angular 应用程序连接起来
- kubernetes - 您的集群存在身份验证问题。当我进行 gitlab 和 k8s 集群集成时
- wordpress - Wordpress Contact Form 7:如何自定义文件输入上传?
- google-cloud-platform - 如果在 Google Compute Engine 的繁忙数据库中拍摄快照,数据能否保持完整性和完整性?