首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法将promise响应呈现到html div

无法将promise响应呈现到html div
EN

Stack Overflow用户
提问于 2018-07-04 03:21:17
回答 1查看 387关注 0票数 1

我有一个rect组件,我在它的componentDidMount方法下更新了组件的状态变量,这个状态变量在render方法中用来在UI上显示。但是我的div始终是空的,并且在控制台上我看到error.Below是我的组件和js文件内容

App.js

代码语言:javascript
复制
componentDidMount () {
    ...
    this.someInternalMethod()
}

someInternalMethod() {
    someApiCall().then(result => {
      this.state.divContent.setContent(result)
    })
}

apiHelper.js

代码语言:javascript
复制
export function someApiCall() {

    // Build the api endpoint
    var url = "http://someurl";

    fetch(url).then(function(response) {
        if (response.status !== 200) {
          return;
        }
        response.json().then(function(data) {
            //this log is printing data after error 
          console.log(data);
          return formattedHtmlData(data));
        });
    }).catch(function(err) {
       console.log("Sorry data can't be loaded");
    });
}

Formatter.js

代码语言:javascript
复制
export function formattedHtmlData(data) {

    //do html formatting of data put inside div etc.
    and return
}

不能弄清楚我错过了什么。感谢您的帮助。

PS :我已经在stackoverflow - get promise value in react component上提到了这个问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-04 03:29:51

请确保同时返回您的fetchresponse.json()调用,否则承诺链将被打破,并且您将无法在someInternalMethod中使用then

代码语言:javascript
复制
export function someApiCall() {
  // Build the api endpoint
  var url = "http://someurl";

  return fetch(url)
    .then(function(response) {
      if (response.status !== 200) {
        return;
      }
      return response.json().then(function(data) {
        //this log is printing data after error
        console.log(data);
        return formattedHtmlData(data);
      });
    })
    .catch(function(err) {
      console.log("Sorry data can't be loaded");
    });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51161627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档