Apollo Resolver 调用了两次?

Apollo Resolver Called Twice?

我使用 Apollo 查询组件。当数据从解析器返回时,我将其存储在组件状态中,例如:

if (loading) {
    return (<></>);
} else {
    setMyData(data.myData);
}

但是,由于 setMyData 导致刷新,查询组件重新运行查询。

无需重新运行 查询即可将数据存储到 React 组件状态的最佳做法是什么?

理想情况下,因为查询结果已经是(全局)状态,所以根本不应该这样做。但是,您可以:

  • skip: myData 参数传递给查询,以防止它在已设置状态的情况下 运行ning。
  • 仅在挂载时触发查询一次。假设您正在使用挂钩,您可以在挂载上使用 useEffect 到 运行 代码,然后使用 client.query 触发查询并在 Promise it returns 解析时设置状态。