2017-04-10 9 views
0

私はReact Native 0.43を使用しています。私はApiComponentという名前のコンポーネントを持っています。このコンポーネントのcomponentWillMountメソッドでは、APIからいくつかの結果を取得しています。この結果をrenderメソッドで取得します。私は私のコンポーネントに次のコード(要約版)を使用しています:React:いくつかのライフサイクルメソッドを他のものよりも確実に完了させる方法

export default class ApiComponent extends Component { 

    constructor(props) { 
    super(props); 

    this.state = { 
     statement: {}, 
    }; 
    } 

    componentWillMount() { 
    fetch('http://example.com/api_url/') 
    .then(response => response.json()) 
    .then(data => this.setState({ statement: data })) 
    .catch(error => console.error(error)); 
    } 

    render() { 
    return (
     <Text>{'Rendering API: ' + console.log(this.state.statement)}</Text> 
    ); 
    } 
} 

、私はこのコードを実行したとき、私は私のコンソールRendering API: {}で空の結果を取得します。私の理解によると、renderメソッドは、結果がAPIから返される前に実行されるため、状態は結果で更新されていません。

私のcomponentWillMountのコードが実行を完了したときに私のrenderメソッドが実行されることを私は確信できますか?

+0

ある場合は、あなたのフェッチでは、構文エラーを持ってレンダリングすることを確認するために三項演算を使用することができます。 URLの最後にある引用符を閉じます。 –

+0

ありがとう、私はそれを修正しました。それはちょうどここの構成誤差でした。 –

答えて

1

テキストのみthis.state.statementが真

return (
    { this.state.statement ? <Text>{'Rendering API: ' + console.log(this.state.statement)}</Text> : null } 
) 
+0

私の 'render'メソッドにはAPIの結果が必要です。これは一度レンダリングされるだけで、 'componentWillMount'メソッドが状態を更新するとき、それは再びレンダリングされません。 –

関連する問題