为什么我的graphql Higher Order Component使用Apollo Client激活选项11次?

时间:2017-01-29 16:52:06

标签: graphql react-apollo apollo-client

我在exponent中使用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配置   包装组件;在哪里使用组件   应用程序,调用者将传递参数。所以选项可以是   获取外部组件的props的函数(ownProps by   约定):

// 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);.   但是,如果您需要更改变量的名称,或计算   选项,价值(或只是想更明确的事情)   功能就是这样做的地方。

0 个答案:

没有答案