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} />);
}