在接收到REST Endpoint数据且无法呈现状态属性之前执行下一步

时间:2019-05-06 15:31:35

标签: reactjs

在我的React js应用程序中,我消耗了一个端点,该端点花费了更长的时间来响应,有时还需要1.5秒(因为它从Big Query获取数据)。因此,执行下一步,最后它无法获取价值并且什么也不呈现。但是收到响应后,我可以在浏览器的控制台中找到可用的值。

详细信息:

axios.get(url)
        .then(function(response) {
          this.setState({ listusers: response.data });          
        })
        .catch(function(error) {
          console.error(error);
        });

在render方法中:

{this.state.listusers.length ? (
 this.state.listusers.map(
     element =>  "Time Stamp: " +  element.Timestamp +  " - MacAddress: " +
                element.MacAddress +" - DeviceID: " + element.DeviceID
            )  ) : (  <p>No Data</p>      )}

即使使用setTimeout也无法呈现。

有没有出路?

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该从地图表达式返回DOM,例如:
this.state.listusers.map( element => element ? <p> "foo"+element.bar+"other..." </p> : <p> no data </p> )

因为您只构造一个String,而不返回任何要呈现的内容,

还要检查您的三元条件运算符语法,我想这不是您的意思