2016-10-24 19 views
0

私はtitle, description, old pricenew priceのレンダリングが必要なAPIを持っていますが、正しい方法を知りません。react.jsのAPIを使用してデータをレンダリングしますか?

ここで私は私が間違った方法でデータを取得していると思う私のAPI

export class Content extends React.Component{ 
    constructor(){ 
     super(); 
     this.state={}; 
    } 
    componentWillMount(){ 
     var url="95.85.23.63:8000/frontend/web/api/v1/user/get-popular"; 
     Request.get(url).then((reponse)=>{ 
      this.setState({ 
       infos:response.body.Search, 
       total:response.body.totalResults 
      }); 
     }); 
    } 

    render(){ 
     var infos=_.map(this.state.infos, (info)=>{ 
      return <li>{info.title}</li>; 
     }); 

     return(
     <div> 
     <ul> {infos}</ul> 

     </div> 
     ) 
    } 

} 

とコンテンツコンポーネント。手伝っていただけませんか?

+0

に要求するために推奨されるか、あなたが反応し使用することができ、次のコードを参照してください。 -thunkまたはreact-sagaを使用してapiからデータを取得します。コンポーネントがマウントされているときは、componentDidMount(){this.props.dispatch(search)}} –

答えて

0

asyncが電話しています。したがって、レンダリングで空の状態を処理する必要があります。

[EDIT]のコメントで述べたように

、次に、あなたがアクションを作成する必要がありcomponentDidMount()

export class Content extends React.Component{ 
    constructor(){ 
     super(); 
     this.state={ 
      infos: [], 
      total: 0, 
     }; 
    } 
    componentDidMount(){ 
     var url="95.85.23.63:8000/frontend/web/api/v1/user/get-popular"; 
     Request.get(url).then((reponse)=>{ 
      this.setState({ 
       infos:response.body.Search, 
       total:response.body.totalResults 
      }); 
     }); 
    } 

    render(){ 
     if(this.state.infos.length === 0) 
      return false //return false when nothing is in the state 
     var infos=_.map(this.state.infos, (info)=>{ 
      return <li>{info.title}</li>; 
     }); 

     return(
     <div> 
     <ul> {infos}</ul> 

     </div> 
     ) 
    } 

} 
+0

を意味するcomponentwillMountでajaxリクエストを行うことは想定されていない、無限ループを引き起こし、コンポーネントのマウントをブロックする可能性があります。私たちはそれをcomponentdidMountに書くべきです –

+0

それは当てはまりません。あなたは 'componentDidUpdate'にsetStateを渡すべきではありません。これは無限ループを引き起こします。これがあなたの疑いを解消することを願っています。 –

+0

これをチェックしてくださいhttp://stackoverflow.com/questions/27139366/why-do-the-react-docs-recommend-doing-ajax-in-componentdidmount-not-componentwi –

関連する問題