Graphql 阿波罗分解器打了两次电话?
我使用Apollo查询组件。当数据从解析器返回时,我将其存储在组件状态,例如:Graphql 阿波罗分解器打了两次电话?,graphql,apollo,react-apollo,apollo-client,Graphql,Apollo,React Apollo,Apollo Client,我使用Apollo查询组件。当数据从解析器返回时,我将其存储在组件状态,例如: if (loading) { return (<></>); } else { setMyData(data.myData); } 但是,由于setMyData会导致刷新,因此查询组件会重新运行查询 存储数据以响应组件状态而不重新运行查询的最佳做法是什么?理想情况下,因为查询结果已经是全局状态,所以根本不应该这样做。但是,您可以: 将skip:myData参数传递给查询,以防
if (loading) {
return (<></>);
} else {
setMyData(data.myData);
}
但是,由于setMyData会导致刷新,因此查询组件会重新运行查询
存储数据以响应组件状态而不重新运行查询的最佳做法是什么?理想情况下,因为查询结果已经是全局状态,所以根本不应该这样做。但是,您可以: 将skip:myData参数传递给查询,以防止查询在状态已设置时运行。 在装载时仅触发一次查询。假设您使用的是钩子,那么可以使用useffect在挂载时运行代码,然后使用client.query启动查询,并在它返回的承诺解析时设置状态。