我在指数反应本机应用程序中使用 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 函数。