我在一个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 {
...

查看文档中的示例http://dev.apollodata.com/react/queries.html

通常,查询的变量将由包装器组件的props配置;在应用程序中使用组件的地方,调用者将传递参数 . 因此选项可以是一个函数,它接受外部组件的支持(ownProps按惯例):

// The caller could do something like:
<ProfileWithData avatarSize={300} />

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

默认情况下,graphql将尝试从ownProps中查询任何缺少的变量 . 所以在我们上面的例子中,我们可以使用更简单的ProfileWithData = graphql(CurrentUserForLayout)(Profile);.但是,如果您需要更改变量的名称或计算值(或者只是想更明确地了解事物),则可以使用选项功能 .