как пропустить запрос в `useLazyLoadQuery` - PullRequest
0 голосов
/ 16 марта 2020

Как я могу пропустить запрос / запрос в useLazyLoadQuery.

import { useLazyLoadQuery } from 'react-relay/hooks';

const id = props.selectedId // id can be a number or null
const user = useLazyLoadQuery(query, {id}) // skip query/request network if id is null

1 Ответ

1 голос
/ 16 марта 2020

Вы можете использовать директиву @skip или @include . Если запрос оказывается пустым в соответствии с условиями директивы, сетевой запрос не будет выполнен. Рассмотрим пример:

import { useLazyLoadQuery } from 'react-relay/hooks';

function MaybeUser(props) {
  const { userId } = props;
  //        ? is optional/nullable

  useLazyLoadQuery(
    graphql`
      query MaybeUserQuery($userId: ID!, $skip: Boolean!) {
        user(id: $userId) @skip(if: $skip) {
          fullName
        }
      }
    `,
    {
      userId: userId || '', // we need to pass something because of the query $userId type decleration
      skip: !userId,        // skip when there is no user ID
    },
  );

  return <magic />;
}

Пусто userId создает пустое значение MaybeUserQuery, в результате чего нет сетевых запросов .

...