次のコードがあります。
const HomeWithApollo = withApollo(compose(
graphql(HOME_QUERY, {
props({
data: { loading, page, fetchMore }
}) {
return {
loading,
page,
fetchLocations: () => {
return fetchMore({
query: ALL_LOCATIONS_QUERY,
updateQuery: (prev, {fetchMoreResult}) => {
if (!fetchMoreResult.data) { return prev; }
return {
data: [...prev, ...fetchMoreResult.data]
};
}
})
}
};
}
})
)(Home));
Apollo に移行する前に、ALL_LOCATIONS_QUERY を同形フェッチ クライアント側 (基本的には AJAX 要求) としてロードしました。しかし、私はアポロウェイを探していて、まだ持っているかどうかわかりません. いくつかの質問を聞きたいんです。
- を使用して、Home データと Locations データを完全に別々にロードしているため、それらを高次コンポーネント内の複数の関数
graphql(QUERY_NAME, { options })
に個別に配置する必要がありますか?graphql
withApollo(compose([...here])
- 現在、
fetchMore
関数からデータを取得するために次のことを行っていますが、状態内で実行する必要があるため、Apollo はキャッシュのためにそれを認識しています。これについて何か考えはありますか?私は正しい方向に進んでいますか?
async componentDidMount(){
const { data } = await this.props.fetchLocations();
this.setState({ locations: data.allLocations });
}
事前にどうもありがとうございました!