2

次のコードがあります。

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 })に個別に配置する必要がありますか?graphqlwithApollo(compose([...here])
  • 現在、fetchMore関数からデータを取得するために次のことを行っていますが、状態内で実行する必要があるため、Apollo はキャッシュのためにそれを認識しています。これについて何か考えはありますか?私は正しい方向に進んでいますか?

async componentDidMount(){
  const { data } = await this.props.fetchLocations();
  this.setState({ locations: data.allLocations });
}

事前にどうもありがとうございました!

4

0 に答える 0