我今天对这种行为有点困惑,希望你能对此有所了解。很抱歉懒得编写最小的代码版本,但它应该很容易遵循。
我有一个 React 组件(您填写并提交它的表格(,其中包括另一个组件(面包屑组件(。Breadcrumb 在禁用此表步骤后具有步骤 - 这由从 GraphQl API 返回的布尔值管理,该布尔值检查表是否已填充。
我面临的问题是我的 GraphQl API 没有通过 BreadCrumb 组件重新渲染触发 - 并且 - 我还将一个 prop 从 TableComponent 传递到 Breadcrumb 并存储在 BreadCrumb 中的 useState 中 - 但是 - 默认状态没有改变。
这是为什么呢?GraphQl 查询和 useState 是否仅在组件挂载时更新,而不是在每个渲染上更新?
您的查询很可能是从缓存中解析的。您必须显式使用禁用从缓存解析的提取策略。依靠重新渲染来触发查询听起来像是您可能想要避免的事情。相反,您可以使用触发重新提取查询的useEffect
。然后,您的效果可以侦听(通过将依赖项列为第二个参数(您实际要观察的值。您的体系结构可能不太合理。我听到的另一件事是你正在从道具创建状态。同样,这是您应该避免的事情,除非您确切地知道自己在做什么。
为什么您的组件不能简单地接收属性tableCompleted
?