を反応します。レンダリングしない - 私は私のAPI GraphQLにクエリを作るためにアポロクライアントを使用して反応させ、Reduxのアプリを持っている
私はGridContainerWithDataがgraphqlで問い合わせを行うのconst(gql` ...)
これはデータ私の中を返すですexport default connect(mapStateToProps, mapDispatchToProps)(GridContainerWithData);
を使用してクエリの呼び出しを行うことGridContainerを持っていますエラーが存在し、ロード状態(真または偽)がある場合は、クエリー応答を含む小道具。
は今、私は自分自身がif(loading) {}
を使用してロードを管理しています。
この問題は、クエリの読み込みが行われたときに、それは再びロード状態でだとするとき、私のコンポーネントをレンダリングしています。私はif(loading) {}
を使用しない場合、私は、クエリは、負荷状態にあるときに何かを返す必要というエラーを取得します。
がのローディングのときにコンポーネントに表示されないようにする方法はありますか?
私は
shouldComponentUpdate (nextProps) {
if (this.props.data.loading !== nextProps.data.loading) {
console.log(‘i will rerender’, nextProps.data.loading);
return true;
}else {
return false;
}
}
が、そこに運を使用してみました。
がのローディングのときにコンポーネントに表示されないようにする方法はありますか?
編集:
これは誰でも助けることができる場合、これは私のGridContainerです。
class ActionsToDoGridContainer extends Component {
render() {
const {error} = this.props.data;
if (error) {
return (
<div className='ComponentDistance'>
An unexpected error happened :
{error}
</div>);
} else {
return (
<div className='ComponentDistance'>
<ActionsToDoGrid {...this.props}/>
ActionsToDoButtons {...this.props}/>
</div>
);
}
}
}
残念ながら、私はnullを返すと、新しいデータを受け取るまで、ロード時間のグリッドが消えます。クエリがロード完了するまで私の前のデータでグリッドを保持したいと思います。 – petithomme
私は自分の答えを更新しました。私はあなたがこれのためにshouldcomponentupdateを使用することができると思う –
今、それはアプリケーションの開始時に2回レンダリング(私はそれが正常だと思う)。 **最初の動作**(変更ページ)は、一度レンダリングするだけです(読み込みが終了したとき)。しかし、** 2回目に**私はページを変更します(または3番目または4番目または...)、それは2回レンダリングします(ロードしていない)。 理由は何ですか? – petithomme