0

我在指数反应本机应用程序中使用 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 配置;无论在您的应用程序中使用该组件的任何位置,调用者都会传递参数。所以 options 可以是一个获取外部组件 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);。但是,如果您需要更改变量的名称,或计算值(或只是想更明确地了解事物),则可以使用 options 函数。

4

0 回答 0