【发布时间】:2019-08-23 14:58:11
【问题描述】:
我最近一直在处理一些与钩子相关的问题,因为我一直在将钩子实现到我的项目中。我不断收到错误消息“渲染的钩子比上一次渲染时更多。”
似乎我可以让我的代码工作的唯一方法是将 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 钩子可以用于使用其查询数据初始化其他值。
如果这还不够代码或需要更多解释,请告诉我。谢谢。
【问题讨论】:
标签: reactjs react-apollo react-hooks