为什么我的graphql高阶组件在Apollo客户端上触发了11次选项?
我在exponent react原生应用程序中使用apollo客户端,并注意到graphql选项方法运行了11次,这是为什么?这是错误还是性能问题?这正常吗?它是否也运行了11次查询为什么我的graphql高阶组件在Apollo客户端上触发了11次选项?,graphql,react-apollo,apollo-client,Graphql,React Apollo,Apollo Client,我在exponent react原生应用程序中使用apollo客户端,并注意到graphql选项方法运行了11次,这是为什么?这是错误还是性能问题?这正常吗?它是否也运行了11次查询 ... @graphql(getEventGql,{ options: ({route}) => { console.log('why does this log 11 times', route.params); return { variables: {
...
@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 {
...
查看文档中的示例
通常,查询的变量将由
包装器组件;组件在您的应用程序中使用的位置
应用程序,调用方将传递参数。因此,选择可能是一个问题
获取外部组件的道具的函数(ownProps by
公约):
//调用方可以执行以下操作:
//我们的HOC可能看起来像:
const ProfileWithData=graphql(CurrentUserForLayout{
选项:({avatarSize})=>({variables:{avatarSize}),
})(概况);
默认情况下,graphql将尝试从中提取任何缺少的变量
来自ownProps的查询。因此,在上面的示例中,我们可以使用
更简单的ProfileWithData=graphql(CurrentUserForLayout)(Profile);。
但是,如果需要更改变量的名称,或计算
价值观(或只是想更明确地说明事情),选项
功能是做这件事的地方
你会有11个项目吗?您的路由设置如何,eventId的路由参数何时更改?我使用的是react native exponent附带的参数-使用他们的标准初学者模板您是否有11个组件实例,包装组件中是否有任何道具更改?组件的1个实例-一定有什么东西触发了道具
// The caller could do something like:
<ProfileWithData avatarSize={300} />
// And our HOC could look like:
const ProfileWithData = graphql(CurrentUserForLayout, {
options: ({ avatarSize }) => ({ variables: { avatarSize } }),
})(Profile);