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