2017-03-18 8 views
0

したがって、私の反応クラスはjsonレスポンスを呼び出してレンダリングします。最初の負荷でリアクションレンダリングを停止するクリーナー方法はありますか?

しかし、それは、初期ロード時にクラスをレンダリングし、応答が戻ったときに再びレンダリングします。私はこれを行うしているこの問題を回避するには

-

componentDidMount: function() { 

     axios.get....... 
      .then(res => { 
      const jobs = res.data; 
      this.setState({ jobs }); 
      }); 
    }, 

render: function() { 
     if (Object.keys(this.state.jobs).length == 0) 
     { 

     } 
     else { 
      return (
       <div> 
        {this.state.jobs.data.map(function (ob) { 
         return <li key={ob.id}>{ob.name}</li> 

        })} 

       </div> 
     ) 
     } 
     return null; 
    } 

}); 

は、これを行うためのよりよい方法はありますか? if文を使わずに?

+1

if文の中でnullを返します。私はあなたのレンダリングの中にifを使用することに問題があるとは思わない。最初のレンダリングは何も行いません。データを取得すると、htmlを比較して変更を適用します。 – sniels

+0

'if(!this.state.jobs)がnullを返す。 return(); '少し短くなりますが、最初の時間を実行しても問題はありません。 – sniels

答えて

2

リアクションは常に初期ロード時にレンダリングする必要があります。したがって、すでに行ったようにnullをレンダリングするだけです。コードを賢明に書くことができます。

return this.state.jobs.data ? <YourTemplate /> : null; 

クリーナーです。

+0

純粋なコンポーネントや関数に最適 – Nicholas

関連する問題