如何在“useLazyLoadQuery”中跳过请求

sey*_*yed 2 relayjs react-hooks

我如何跳过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
Run Code Online (Sandbox Code Playgroud)

eni*_*njo 10

您可以使用@skipor@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 />;
}
Run Code Online (Sandbox Code Playgroud)

EmptyuserId产生一个空,MaybeUserQuery导致没有网络请求