From 24067c0ce48f568fdc19b88f9d127064a48828d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82?= Date: Mon, 29 Apr 2019 21:52:51 +0200 Subject: [PATCH] Fix sending request by Query with deep props on every update --- packages/ra-core/src/util/Query.spec.tsx | 31 ++++++++++++++++-------- packages/ra-core/src/util/Query.tsx | 6 ++--- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/packages/ra-core/src/util/Query.spec.tsx b/packages/ra-core/src/util/Query.spec.tsx index 27c3559d3d3..a06c6c527ef 100644 --- a/packages/ra-core/src/util/Query.spec.tsx +++ b/packages/ra-core/src/util/Query.spec.tsx @@ -213,11 +213,15 @@ describe('Query', () => { it('should not dispatch a new fetch action when updating with the same query props', () => { let dispatchSpy; - const myPayload = {}; const { rerender } = render( {({ store }) => { dispatchSpy = jest.spyOn(store, 'dispatch'); + const myPayload = { + foo: { + bar: 1, + }, + }; return ( { ); rerender( - {() => ( - - {() =>
Hello
} -
- )} + {() => { + const myPayload = { + foo: { + bar: 1, + }, + }; + return ( + + {() =>
Hello
} +
+ ); + }}
); expect(dispatchSpy.mock.calls.length).toEqual(1); diff --git a/packages/ra-core/src/util/Query.tsx b/packages/ra-core/src/util/Query.tsx index a565961534c..b9034adeb88 100644 --- a/packages/ra-core/src/util/Query.tsx +++ b/packages/ra-core/src/util/Query.tsx @@ -1,5 +1,5 @@ import { Component, ReactNode } from 'react'; -import { shallowEqual } from 'recompose'; +import equal from 'deep-equal'; import withDataProvider from './withDataProvider'; type DataProviderCallback = ( @@ -107,8 +107,8 @@ class Query extends Component { if ( prevProps.type !== this.props.type || prevProps.resource !== this.props.resource || - !shallowEqual(prevProps.payload, this.props.payload) || - !shallowEqual(prevProps.options, this.props.options) + !equal(prevProps.payload, this.props.payload) || + !equal(prevProps.options, this.props.options) ) { this.callDataProvider(); }