Apollo GraphQL:子组件重新运行父查询?

Posted

技术标签:

【中文标题】Apollo GraphQL:子组件重新运行父查询?【英文标题】:Apollo GraphQL: Child Component Re-Runs Parent Query? 【发布时间】:2017-03-25 03:54:38 【问题描述】:

我有一个附加了 Apollo 查询的父组件:

const withData = graphql(MY_QUERY, 
    options( userID ) 
        return 
            variables:  _id: userID
        ;
    ,
    props( data:  loading, getOneUser  ) 
        return  loading, getOneUser ;
    ,
);

export default compose(
    withData,
    withApollo
)(NavigatorsList);

export  getOneUser_QUERY ;

我在渲染函数中嵌入了一个名为 userPhoto 的子组件:

   return (
        <div>
            <userPhoto />
            [.....]
        </div>
        )

在没有子组件的情况下,withData GraphQL 函数运行两次,一次用于loading == true,另一次用于返回数据。

在包含子组件的情况下,withData GraphQL 函数会运行 3 次。第三次 getOneUser 未定义,我的组件抛出错误。

我该如何纠正这个问题?

在此先感谢大家提供任何信息。

【问题讨论】:

【参考方案1】:

已修复。子组件中存在语法错误,它没有引发错误,但导致查询运行两次 + 各种其他异常。

【讨论】:

以上是关于Apollo GraphQL:子组件重新运行父查询?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apollo 重新获取部分 GraphQL 查询的最佳实践?

Apollo - Angular 应用程序中子组件的多个 graphql 订阅

GraphQL _ Apollo-client - 直接在组件中传递 guery 变量

React、Apollo 2、GraphQL、身份验证。登录后如何重新渲染组件

Apollo graphql 连接的 React 组件没有重新渲染

仅在 React 组件挂载上运行 Apollo 查询(没有 queryData 和生命周期)