From 3cec39770b719925176d36dccc0a6d9f8483ce13 Mon Sep 17 00:00:00 2001
From: fzaninotto <fzaninotto@gmail.com>
Date: Wed, 2 Dec 2020 08:39:24 +0100
Subject: [PATCH] Fix ReferenceManyField renders too often

---
 packages/ra-core/src/dataProvider/useGetMany.ts | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/packages/ra-core/src/dataProvider/useGetMany.ts b/packages/ra-core/src/dataProvider/useGetMany.ts
index 1f96acebcee..9c55b0c296a 100644
--- a/packages/ra-core/src/dataProvider/useGetMany.ts
+++ b/packages/ra-core/src/dataProvider/useGetMany.ts
@@ -5,6 +5,7 @@ import { createSelector } from 'reselect';
 import debounce from 'lodash/debounce';
 import union from 'lodash/union';
 import isEqual from 'lodash/isEqual';
+import get from 'lodash/get';
 
 import { CRUD_GET_MANY } from '../actions/dataActions/crudGetMany';
 import { Identifier, Record, ReduxState, DataProviderProxy } from '../types';
@@ -143,12 +144,14 @@ const useGetMany = (
  */
 const makeGetManySelector = () =>
     createSelector(
-        (state: ReduxState) => state.admin.resources,
-        (_, resource) => resource,
-        (_, __, ids) => ids,
-        (resources, resource, ids) =>
-            resources[resource]
-                ? ids.map(id => resources[resource].data[id])
+        [
+            (state: ReduxState, resource) =>
+                get(state, ['admin', 'resources', resource, 'data']),
+            (_, __, ids) => ids,
+        ],
+        (resourceData, ids) =>
+            resourceData
+                ? ids.map(id => resourceData[id])
                 : ids.map(id => undefined)
     );