2017-05-10 3 views
1

最初にarticlesプロパティを設定するためにcomponentWillMount()を使用しました(これは問題ありません)。これらの値を繰り返して、特定のコンテナ/コンポーネントに異なるイメージ/テキストを表示しました。componentWillMount内の複数のフェッチステートメント

私が今問題にしているのは、プロパティを1つの画像で塗りつぶすのにcomponentWillMountを使いたいということです。私は[]の代わりに''を使用しても大丈夫だと思いますが、これら2つのAPIコールをどのように作成するかはわかりません。

私の答えがおそらく約束にあることを知るには十分な研究を行っていますが、私が特定の問題にどのように当てはまるかを例から推論することはできませんでした。何か案は?

constructor(props) { 
    super(props); 
    this.state = { 
    articles: [], 
    backgroundz: '', 
    }; 
} 


componentWillMount() { 
    fetch('http://localhost:8000/api/getArticles') 
    .then(function (response) { 
     return response.json(); 
    }) 
    .then(function (json) { 
     this.setState({ 
     articles: json, 
     }); 
    }.bind(this)); 

    fetch('http://localhost:8000/api/getBackground') 
    .then(function (response) { 
    return response.json(); 
    }) 
    .then(function (json) { 
    this.setState({ 
     backgroundz: json, 
    }); 
    }.bind(this)); 
} 
+0

「.bind(this)」ではなく、実際には矢印機能を使用する必要があります。 – Bergi

+0

おそらく、各 'setState'コールで状態の変更されていない部分を複製する必要があります – Bergi

答えて

0

the React documentationそれ以外

ごとに、これらの構文が要求をフェッチとしてあなたは、componentDidMountで最初のAJAXリクエストを実行するつもりは少しオフになっています。また、コンストラクタで使用されない場合は、コンストラクタまたはスーパーに渡す理由もありません。なぜなら、一般的に避けてください。

constructor() { 
    super(); 
    this.state = { 
    articles: [], 
    backgroundz: '', 
    }; 
} 


componentDidMount() { 
    fetch('http://localhost:8000/api/getArticles') 
    .then(response => response.json()) 
    .then(articles => this.setState({ articles }); 

    fetch('http://localhost:8000/api/getBackground') 
    .then(response => response.json()) 
    .then(backgroundz => this.setState({ backgroundz }); 

    } 
} 
+0

' await'を使うために 'async componentDidMount()'として定義することもできます –

関連する問題