3

因此,我使用 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?
          }
        }>
4

2 回答 2

6

使用 awaitRefetchQueries:true,它将等到重新获取查询解决 awaitRefetchQuery

于 2020-07-16T19:05:29.873 回答
2

Apollo React 文档在这方面不是很好,但是有一个开放的问题可以改进它。

与其查看data.loading属性,不如使用data.networkStatus. 它将4在重新获取期间更改为(networkStatus 值)。

但是,为了更新此值,您还需要在查询选项中设置选项notifyOnNetworkStatusChangetrue

使用 Reactgraphql高阶组件,它看起来像:

var myQuery = gql`
    query MyQuery {
        ...
    }
`;

var myComponentWithData = graphql(myQuery, {
        options: {
            notifyOnNetworkStatusChange: true
        }
    }
)(MyComponent);
于 2017-03-28T16:43:15.400 回答