首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用useState存储useQuery中的数据

使用useState存储useQuery中的数据
EN

Stack Overflow用户
提问于 2019-08-20 23:35:31
回答 2查看 7.1K关注 0票数 11

我使用React钩子通过react-apollo获取GraphQL数据并存储本地状态:

代码语言:javascript
复制
const [userData, setUserData] = useState({})
const { loading, error, data } = useQuery(USER_QUERY)

但是,我想知道如何将data存储到userData中。它的工作原理是这样的:

代码语言:javascript
复制
useEffect(() => {
  setUserData(data)
}, [Object.entries(data).length])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-20 23:45:40

看起来你所拥有的可能是有效的。在options参数中还提供了一个onCompleted选项。它接受以下类型的回调:

代码语言:javascript
复制
(data: TData | {}) => void

所以这是另一种方式:

代码语言:javascript
复制
const { loading, error, data } = useQuery(USER_QUERY, {onCompleted: setUserData})
票数 15
EN

Stack Overflow用户

发布于 2019-08-20 23:48:55

您试图如何处理返回的数据,而这些数据不能通过简单地将其从查询钩子中去结构化地使用来完成?在大多数用例中,它可以立即使用,因为它会在重新获取时自我更新。

如果有必要(也可能是这样),就像另一个答案所说的那样,您发布的useEffect钩子应该可以工作,但我会简单地用data替换依赖项,以防止出现响应具有相同长度且由不同数据组成且不更新的边缘情况:

代码语言:javascript
复制
useEffect(() => {
  setUserData(data)
}, [data])
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57577102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档