使用apollo客户端如何在变异refetchQueries上设置加载状态?

时间:2017-02-03 16:37:35

标签: react-apollo apollo-client

所以我使用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?
          }
        }>

2 个答案:

答案 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);