Как обрабатывать асинхронную проверку на уровне поля в форме react-hook с помощью useLazyQury ловушки Apollo Client?
Насколько я понимаю, хук useLazyQuery
— это единственный способ инициализировать запрос GraphQL для какого-либо действия (например, onClick
). К сожалению для меня, этот хук возвращает void
и заставляет меня использовать переменную data
для получения значения. Но. Форма реакции-хука требует вернуть значение true/false
в asyncValidation. Как поступить в таком случае?
const AsyncValidation = () => {
const [nicknameUniqueness, data ] = useLazyQuery(NICKNAME_UNIQUENESS_QUERY)
return (
<input
{...register('nickname', {
validate: {
asyncValidate: (value) => {
nicknameUniqueness({ variables: { nickname: value } }) // returns void by Apollo documentation
// How to get up-to-dated data here?
return data?.nicknameUniqueness.isUnique
}
}
})}
/>
)
}
Спасибо, кажется, это работает для меня. Я попробую и дам вам отзыв.
Я проверил ваше предложение, и оно работает так, как ожидалось. Спасибо большое