【问题标题】:How to chain useQuery hooks using react-apollo-hooks [duplicate]如何使用 react-apollo-hooks 链接 useQuery 钩子 [重复]
【发布时间】:2019-09-14 04:57:05
【问题描述】:

我想使用钩子执行 2 个查询,其中第二个查询使用在第一个查询中检索到的信息。例如:

const { data, error, loading } = useQuery(GET_DOGS);
const result2 = useQuery(GET_BREEDS, { variables: { dogId: data[0].id } });

现在我使用一些状态并在第二个钩子上设置 skip 参数,但是我认为必须有一些我可能会忽略的更简单的解决方案?

【问题讨论】:

    标签: reactjs graphql react-apollo react-hooks


    【解决方案1】:

    Hooks 不能是有条件的,因此您不能像使用 Query 组件那样使用 if 语句或提前返回。无论好坏,使用skip参数最简单的解决方案:

    const { data, error, loading } = useQuery(GET_DOGS);
    const result2 = useQuery(GET_BREEDS, {
      skip: !data,
      variables: { dogId: data && data.dogs[0].id },
    });
    

    顺便说一句,如果是 2017 年并且我们仍在使用 HOCs and recompose,您可能会如何处理它并没有什么不同。

    【讨论】:

    • 没错,这就是为什么我确实没有包括条件案例。有什么东西告诉我原来的 fetch 更好玩?你知道在使用 react-apollo 时使用类似于 fetch 的 graphql 查询的方法吗?
    • 我正在尝试以您为榜样。在我的代码中,我收到错误 Cannot read property dogs of undefined。似乎在跳过查询之前无论如何都会对数据进行评估。你怎么解决这个问题?这真的有效吗?
    • @7ball data 最初是未定义的,因此您的代码应该反映这一点。我已经更新了答案,所以更清楚了。
    猜你喜欢
    • 2020-10-30
    • 2019-09-14
    • 2021-03-02
    • 2020-01-02
    • 2020-10-19
    • 2020-11-15
    • 2020-02-20
    • 2019-10-06
    • 2019-11-19
    相关资源
    最近更新 更多