【问题标题】:Apollo Resolver Called Twice?阿波罗解析器被称为两次?
【发布时间】:2020-01-14 01:47:54
【问题描述】:

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

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

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

在不重新运行查询的情况下将数据存储到 React 组件状态的最佳做法是什么?

【问题讨论】:

    标签: graphql apollo react-apollo apollo-client


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-09
      • 2022-01-17
      • 2019-09-15
      • 2019-10-08
      • 2021-09-09
      • 2019-04-16
      • 2021-04-03
      • 2020-06-27
      • 2013-02-02
      相关资源
      最近更新 更多