useQuery和useState是否仅在组件安装上触发?

时间:2019-11-26 16:59:04

标签: reactjs graphql react-hooks apollo

我今天对此行为感到有点困惑,希望您能对此有所了解。很抱歉懒于编写最小的代码版本,但是应该很容易理解。

我有一个React组件(您填写并提交其表),其中包括另一个组件(Breadcrumb组件)。面包屑在禁用此表步骤之后有一些步骤-由boolean管理,该布尔值是从GraphQl API返回的,该布尔值检查是否填充了表。

我面临的问题是我的GraphQl API不能在重新渲染Breadcrumb组件时触发-并且-我还从TableComponent传递了一个道具到Breadcrumb并存储在BreadCrumb中的useState中-但是-默认状态没有改变。

这是为什么? GraphQl查询和useState仅在组件安装而不是在每个渲染器上更新吗?

1 个答案:

答案 0 :(得分:0)

您的查询很可能是从缓存中解决的。您必须明确使用禁止从缓存解析的提取策略。但是,依靠重发来触发查询听起来像您可能想要避免的事情。相反,您可以使用useEffect来触发refetch query。然后,您的效果可以侦听(通过将依赖项作为第二个参数列出)实际要观察的值。您的架构可能不太健全。我听到的另一件事是您正在通过道具创造状态。同样,除非您确切知道自己在做什么,否则应该避免这种情况。

为什么您的组件不能简单地接收属性tableCompleted