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 解析时设置状态。
我使用 Apollo 查询组件。当数据从解析器返回时,我将其存储在组件状态中,例如:
if (loading) {
return (<></>);
} else {
setMyData(data.myData);
}
但是,由于 setMyData
导致刷新,查询组件重新运行查询。
无需重新运行 查询即可将数据存储到 React 组件状态的最佳做法是什么?
理想情况下,因为查询结果已经是(全局)状态,所以根本不应该这样做。但是,您可以:
- 将
skip: myData
参数传递给查询,以防止它在已设置状态的情况下 运行ning。 - 仅在挂载时触发查询一次。假设您正在使用挂钩,您可以在挂载上使用
useEffect
到 运行 代码,然后使用client.query
触发查询并在 Promise it returns 解析时设置状态。