使用 apollo 客户端如何设置突变 refetchQueries 的加载状态?
With apollo client how do you set loading status on mutation refetchQueries?
因此,我使用 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?
}
}>
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);
使用awaitRefetchQueries:true,它将等待重新获取查询解决
awaitRefetchQuery
因此,我使用 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?
}
}>
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);
使用awaitRefetchQueries:true,它将等待重新获取查询解决 awaitRefetchQuery