处理加载而没有单独的内容

时间:2017-06-30 01:28:52

标签: javascript reactjs redux immutable.js

在我的应用程序中,我从API获取内容。我可以显示内容并显示加载器图标,直到内容未加载。但是如果没有任何内容,页面会显示加载器图标,这是意外的。如果根本没有内容,预期的功能是不显示可用的内容。

render() {
    const { logs } = this.state;
    if (logs.size === undefined) {
      return <div>No Logs</div>;
    } else if (isEmpty(logs)) {
      return (
        <div className="earth-spinning">
          <img src={EarthSpinning} alt="spinner" style={{ margin: "0 auto" }} />
        </div>
      );
    } else {
      return (
        <div>
          <h2>Logs</h2>
          <button onClick={() => this.props.deleteLogs()}>
            Delete All Logs
          </button>
          <ul className="list-group">
            {this.renderLogs()}
            {this.state.show ? this.props.dialog : null}
          </ul>
        </div>
      );
    }
  }

这是我得到的数据

enter image description here

1 个答案:

答案 0 :(得分:0)

让API返回承诺是好的,这样您就可以在完成时做出响应

这个例子假设您将进行API调用,数据将转到商店,并且会出现在道具上

...

getInitialState() {
    return {
        loading: true
    };
}

componentWillMount() {
   this.props.requestLogs()
       .then(() => this.setState({ loading: false });
}

render() {
    if (this.state.loading) {
        return this.renderLoading();
    }

    if (this.props.logs.length === 0) {
        return this.renderEmptyView();
    }

    return this.renderStuff();
}