为什么我的graphql高阶组件在Apollo客户端上触发了11次选项?

为什么我的graphql高阶组件在Apollo客户端上触发了11次选项?,graphql,react-apollo,apollo-client,Graphql,React Apollo,Apollo Client,我在exponent react原生应用程序中使用apollo客户端,并注意到graphql选项方法运行了11次,这是为什么?这是错误还是性能问题?这正常吗?它是否也运行了11次查询 ... @graphql(getEventGql,{ options: ({route}) => { console.log('why does this log 11 times', route.params); return { variables: {

我在exponent react原生应用程序中使用apollo客户端,并注意到graphql选项方法运行了11次,这是为什么?这是错误还是性能问题?这正常吗?它是否也运行了11次查询

...

@graphql(getEventGql,{
  options: ({route}) => {
    console.log('why does this log 11 times', route.params);
    return {
      variables: {
        eventId: route.params.eventId,
      }
    }
  },
})
@graphql(joinEventGql)
@connect((state) => ({ user: state.user }))
export default class EventDetailScreen extends Component {
...
查看文档中的示例

通常,查询的变量将由 包装器组件;组件在您的应用程序中使用的位置 应用程序,调用方将传递参数。因此,选择可能是一个问题 获取外部组件的道具的函数(ownProps by 公约):

//调用方可以执行以下操作:
//我们的HOC可能看起来像:
const ProfileWithData=graphql(CurrentUserForLayout{
选项:({avatarSize})=>({variables:{avatarSize}),
})(概况);
默认情况下,graphql将尝试从中提取任何缺少的变量 来自ownProps的查询。因此,在上面的示例中,我们可以使用 更简单的ProfileWithData=graphql(CurrentUserForLayout)(Profile);。 但是,如果需要更改变量的名称,或计算 价值观(或只是想更明确地说明事情),选项 功能是做这件事的地方


你会有11个项目吗?您的路由设置如何,eventId的路由参数何时更改?我使用的是react native exponent附带的参数-使用他们的标准初学者模板您是否有11个组件实例,包装组件中是否有任何道具更改?组件的1个实例-一定有什么东西触发了道具
// The caller could do something like:
<ProfileWithData avatarSize={300} />

// And our HOC could look like:
const ProfileWithData = graphql(CurrentUserForLayout, {
  options: ({ avatarSize }) => ({ variables: { avatarSize } }),
})(Profile);