apollo-feature-requests icon indicating copy to clipboard operation
apollo-feature-requests copied to clipboard

Support skipToken in useReadQuery

Open brexmatt opened this issue 2 years ago • 7 comments

  • useReadQuery reads a query given a query reference returned by useBackgroundQuery.
  • useBackgroundQuery supports passing in a skipToken, which results in an undefined query reference
  • However, useReadQuery will throw if given an undefined query reference
  • It would be nice if useReadQuery could either accept a skipToken or returned undefined data when given an undefined query reference
function PetStore() {
  const params = new URLSearchParams(window.location);
  const [dogsQueryRef] = useBackgroundQuery(
    DogsQuery,
    params.get("dogs") ? {} : skipToken
  );

  return <DogList queryRef={dogsQueryRef} />;
}

function DogList({ queryRef }) {
  const { data } = useReadQuery(queryRef || skipToken);
  const dogs = data?.dogs || DEFAULT_DOGS;

  return dogs.map(dog => <Dog dog={dog} />);
}

brexmatt avatar Nov 06 '23 19:11 brexmatt