IDは毎分新しいAPI呼び出しを作成することで、最新の状態を維持するビューを作成するのが好きです。基本的には、すべての子コンポーネントをトリガーして再レンダリングし、API呼び出しを再度行う必要があります。 IveはforceUpdate()を使って試してみました。また、prop(下記)を更新しました。タイマーが働いているが、子コンポーネントは、より多くのデータ子コンポーネントを強制的に再登録する(API呼び出しを行う)
のためのAPIを呼び出していない現在、コンポーネントは次のようになります。私は、ここに期待していた
class Api extends React.Component {
componentDidMount() {
this._makeApiCall(this.props.endpoint);
}
...
:
class MyComponent extends React.Component<Props, State> {
state = {
time: 0
};
private interval : any;
componentDidMount() {
this.interval = setInterval(this._refreshPage.bind(this), 1000);
}
componentWillUnmount() {
clearInterval(this.interval);
}
_refreshPage() {
console.log("refresh");
//this.forceUpdate();
this.setState({ time: Date.now() });
}
render() {
return (
<div className="MyComponent">
<Api endpoint={'/api/revenue/total_revenue?' + this.state.time} loadData={true}>
<Table />
</Api>
...
アピnuwタイムスタンプ(それがしている)で変更されたプロキシクエリパラメータとして、Api
コンポーネントは再レンダリングして「新しい」エンドポイントを呼び出します。小道具は変更されますが、APIは再び呼び出されません。なぜですか?
これにはどのライフサイクルが適していますか? –
ちょうど編集されました。 shouldComponentUpdateはおそらくあなたが望むものですが、componentWillReceivePropsも同様に動作します。一度だけ呼び出されるので、componentDidMountではありません。 – gvfordo
少し詳しく説明したり、例を挙げたりできますか? '_makeApiCall'を' shouldComponentUpdate'に移動しても正しく動作しないようです。 –