所以我使用apollo客户端添加一个带有变异的对象列表。假设我有一个事件,我正在添加参与者,我正在使用refetchQueries来获取详细信息屏幕上参与者的刷新事件。不幸的是,在重新获取期间我没有获得data.loading == true
状态,这使得用户可能会不断重复点击该加入参与者按钮。
<Button styleName="dark full-width" onPress={()=> {
this.props.joinEvent({
variables: { eventId: Event.id, userId: user.id },
refetchQueries: ['getEvent'],
});
// how do I trigger the data.loading = true like it does during the initial fetch?
}
}>
答案 0 :(得分:3)
使用awaitRefetchQueries:true,它将等到refetch查询解决 awaitRefetchQuery
答案 1 :(得分:0)
Apollo React文档在这方面并不是很好,但有一个open issue可以改进它。
您需要使用data.loading
,而不是查看data.networkStatus
属性。在重新获取期间(networkStatus values),它将更改为4
。
但是,要使此值更新,您还需要在查询选项中将notifyOnNetworkStatusChange
选项设置为true
。
使用React graphql
高阶组件,如下所示:
var myQuery = gql`
query MyQuery {
...
}
`;
var myComponentWithData = graphql(myQuery, {
options: {
notifyOnNetworkStatusChange: true
}
}
)(MyComponent);