2017-02-12 12 views
0

ここでのロジックは分かりません。このコードブロックはページ作成のためのもので、クリックするとこの機能を起動します。ページングでレンダリングするコンポーネントをリコールする

componentDidUpdate() { 
    const { location } = this.context; 
    const { query } = this; 
    if (!isEqual(query, location.query)) { 
     this.query = clone(location.query); 
     API.fetchAll(assign({}, query, { 
      offset : this.getOffset(), 
      limit : page 
     })); 
    } 
} 

しかし、私は本当にそれが何かを伝えることはできないと推測しています。皆さんは手掛かりを持っていますか?

答えて

1

このメソッドは、コンポーネントが新しい状態または新しい小道具を受け取ったときに実行されます。

ロケーションプロパティをthis.context(だからthis.context.location)、クエリプロパティをthis(だからthis.query)に変更しています。

thisのクエリが異なる場合は、場所が変更されている可能性があります(コードに十分な情報はありませんが、URLが変更されていると推測しています)。this.queryに新しい場所のクエリを割り当てています。

クエリプロパティが更新されると、新しいリソースのAPI呼び出しが実行されます。

fetchAllassignの方法はおそらくObject.assignです。したがって、プロパティクエリ、オフセット、およびページを使用して新しいオブジェクトを作成しています。

+0

なぜthis.query = clone(location.query);がありますか? –

+0

私はあなたが 'クローン'を取っているところは分かりませんが、ほとんどの場合、ロケーションプロパティをクエリオブジェクトにコピーしています。 jQueryクローンのドキュメント(https://api.jquery.com/clone/)をご覧ください。私はそれが同じだと言っているわけではないが、同様のことをするかもしれない。 – bognix

関連する問題