2017-06-30 8 views
0

私のアプリケーションでは、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

+0

isEmptyとは何ですか?APIのコンテンツのサンプルを教えてください。 – Li357

+0

私の質問が更新されました。 isEmptyは、オブジェクトが空であるかどうかをチェックしています。 – Serenity

+0

@AndrewLi詳細については、次のリンクを参照してください。https://gist.github.com/anonymous/e1dd5e91297108dadcc6e61d3c08a394 – Serenity

答えて

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(); 
} 
+0

'TypeError:this.props.requestLogs(...)。次に関数ではありません.'エラー – Serenity

+0

はcomponendDidMountとWillMountの両方で試されましたが、動作していません – Serenity

+0

this.props.requestLogsはaを返す関数である必要があります約束する。 –

関連する問題