Недавно я столкнулся с несколькими проблемами, связанными с хуками, так как я внедрял хуки в мой проект.Я продолжаю получать сообщение об ошибке «Отрисовано больше хуков, чем во время предыдущего рендеринга».
Кажется, что единственный способ заставить мой код работать, это поставить хук useQuery после всех других хуков.Однако это является проблемой, поскольку я хочу заполнить некоторые значения состояния значениями из данных в запросе.
// code that doesn't error, but am not able to initialize state with query values
const [url, setUrl] = useState('')
const updateLink = useMutation(LINK_UPDATE_MUTATION, {
variables: {
id: props.id,
url
}
})
const { data, loading, error } = useQuery(LINK_QUERY, {
variables: {
id: props.id
}
})
if (loading) {
return <div>Loading...</div>
}
if (error) {
return <div>Error! {error.message}</div>
}
против
// code that errors with 'Rendered more hooks than during the previous render.'
const { data, loading, error } = useQuery(LINK_QUERY, {
variables: {
id: props.id
}
})
if (loading) {
return <div>Loading...</div>
}
if (error) {
return <div>Error! {error.message}</div>
}
const updateLink = useMutation(LINK_UPDATE_MUTATION, {
variables: {
id: props.id,
url
}
})
const [url, setUrl] = useState(data.link.url)
Я ожидаю, что хук useQuery может бытьиспользуется для инициализации других значений данными запроса.
Если этого кода недостаточно, или требуется более подробное объяснение, просто дайте мне знать.Спасибо.