Вы можете использовать директиву @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
, в результате чего нет сетевых запросов .