From 5b24bbf02867af23f401e0566d68ad0913f23510 Mon Sep 17 00:00:00 2001 From: hwillson Date: Wed, 2 Oct 2019 06:29:06 -0400 Subject: [PATCH] Add React Apollo changes from PR #3514 https://github.com/apollographql/react-apollo/pull/3514 --- src/react/data/QueryData.ts | 32 ++++++--------------- src/react/hooks/__tests__/useQuery.test.tsx | 7 ++++- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/react/data/QueryData.ts b/src/react/data/QueryData.ts index 5c71f33d5b6..ff81dd6e4e3 100644 --- a/src/react/data/QueryData.ts +++ b/src/react/data/QueryData.ts @@ -267,30 +267,14 @@ export class QueryData extends OperationData { next: ({ loading, networkStatus, data }) => { const previousResult = this.previousData.result; - if (previousResult) { - // Calls to `ObservableQuery.fetchMore` return a result before the - // `updateQuery` function fully finishes. This can lead to an - // extra un-necessary re-render since the initially returned data is - // the same as data that has already been rendered. We'll - // prevent the un-necessary render from happening, making sure - // `fetchMore` results are only rendered when `updateQuery` has - // completed. - if ( - previousResult.loading && - previousResult.networkStatus === NetworkStatus.fetchMore && - isEqual(previousResult.data, data) - ) { - return; - } - - // Make sure we're not attempting to re-render similar results - if ( - previousResult.loading === loading && - previousResult.networkStatus === networkStatus && - isEqual(previousResult.data, data) - ) { - return; - } + // Make sure we're not attempting to re-render similar results + if ( + previousResult && + previousResult.loading === loading && + previousResult.networkStatus === networkStatus && + isEqual(previousResult.data, data) + ) { + return; } this.forceUpdate(); diff --git a/src/react/hooks/__tests__/useQuery.test.tsx b/src/react/hooks/__tests__/useQuery.test.tsx index 0693a0131e8..4cc3b094b95 100644 --- a/src/react/hooks/__tests__/useQuery.test.tsx +++ b/src/react/hooks/__tests__/useQuery.test.tsx @@ -851,6 +851,11 @@ describe('useQuery Hook', () => { break; case 3: expect(loading).toBeFalsy(); + expect(data).toEqual({ + cars: [carResults.cars[0]] + }); + break; + case 4: expect(data).toEqual({ cars: [carResults.cars[0], moreCarResults.cars[0]] }); @@ -869,7 +874,7 @@ describe('useQuery Hook', () => { ); return wait(() => { - expect(renderCount).toBe(4); + expect(renderCount).toBe(5); }); } );