From 3cec39770b719925176d36dccc0a6d9f8483ce13 Mon Sep 17 00:00:00 2001 From: fzaninotto 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) );