javascript - 如何仅在 ReactJS 中完成 http 请求后才进行渲染

标签 javascript reactjs

我只需要在完成对 componentDidMount 函数的请求后调用我的组件的渲染函数。

componentDidMount(){    
    let ctx = this;
    ApiService.get('/busca/empresa/pagina').then(function(response){
      if(response.data.empresa){
        ctx.setState({company:response.data.empresa});
        ctx.getProducts();
        ctx.verifyAuthentication();
      }
    }, function(error){
       Notification.error('HTTP Status: ' + error.response.status + ' - ' + error.response.data.mensagem);
    });
}

问题在于,当打开页面时,渲染函数在 componentDidMount 完成之前被调用。始终从 else 条件 (renderNotValidateCompany) 返回函数并在更新 this.state.company 后返回 renderValidateCompany。

render(){
    if(this.state.company){
      return this.renderValidateCompany();
    }else{
      return this.renderNotValidateCompany();
    }
}

有没有可能是react中componentDidMount完成才调用rendering?

谢谢!

最佳答案

就像我在评论中所说的那样,将请求状态存储在状态中并基于它进行渲染:

this.state = {
  company:null,
  requestCompleted:false,
}

在渲染方法中:

render(){
 if(this.state.requestCompleted && this.state.company){
    return this.renderValidateCompany();
  }
 else if (this.state.requestCompleted){
    return this.renderNotValidateCompany();
  }
 else {
  return <LoadingGif />
  {/*or return null*/}
 }
}

当然会在 Promise 中更新请求状态。

关于javascript - 如何仅在 ReactJS 中完成 http 请求后才进行渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45808247/

相关文章:

javascript - 展开/折叠树中的子元素(AngularJS)

javascript - Express.js : POST data sent as KEY ONLY in my req. 主体对象

javascript - 与 API 交互时, header 键变为小写 - React native

javascript - 如何使用 javascript 更新选定的共享点列表项,

reactjs - react Jest 快照测试 - 更改目录结构

javascript - 如何在不重新加载页面的情况下将服务器端重定向到其他页面并且仍然将 URL 保留在 Nextjs 应用程序中?

javascript - 如何设置元素的样式,就好像它出现在 reactjs 中的浏览器窗口底部一样?

javascript - 如何使用 JQuery 从服务器获取二进制数据?

javascript - 计算子 div 顶部位置 - 为什么需要减去父 offsetHeight?

php - 创建类似 google plus/digg 的社交书签按钮