From 80e931bebac4b41c66bc314c9ccf4bb26f82e756 Mon Sep 17 00:00:00 2001 From: Gildas Garcia <1122076+djhi@users.noreply.github.com> Date: Fri, 17 Mar 2023 11:15:43 +0100 Subject: [PATCH] Include the `to` prop in memoization check of `` and `` --- .../ra-ui-materialui/src/button/CreateButton.tsx | 4 +++- .../ra-ui-materialui/src/button/ShowButton.tsx | 16 +++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/ra-ui-materialui/src/button/CreateButton.tsx b/packages/ra-ui-materialui/src/button/CreateButton.tsx index 913de0134e7..5fa7a3f2396 100644 --- a/packages/ra-ui-materialui/src/button/CreateButton.tsx +++ b/packages/ra-ui-materialui/src/button/CreateButton.tsx @@ -7,6 +7,7 @@ import ContentAdd from '@mui/icons-material/Add'; import clsx from 'clsx'; import { Link } from 'react-router-dom'; import { useTranslate, useResourceContext, useCreatePath } from 'ra-core'; +import isEqual from 'lodash/isEqual'; import { Button, ButtonProps } from './Button'; @@ -124,6 +125,7 @@ export default memo(CreateButton, (prevProps, nextProps) => { prevProps.resource === nextProps.resource && prevProps.label === nextProps.label && prevProps.translate === nextProps.translate && - prevProps.disabled === nextProps.disabled + prevProps.disabled === nextProps.disabled && + isEqual(prevProps.to, nextProps.to) ); }); diff --git a/packages/ra-ui-materialui/src/button/ShowButton.tsx b/packages/ra-ui-materialui/src/button/ShowButton.tsx index 5b772d43c08..6f85a1dc2aa 100644 --- a/packages/ra-ui-materialui/src/button/ShowButton.tsx +++ b/packages/ra-ui-materialui/src/button/ShowButton.tsx @@ -9,6 +9,7 @@ import { useRecordContext, useCreatePath, } from 'ra-core'; +import isEqual from 'lodash/isEqual'; import { Button, ButtonProps } from './Button'; @@ -87,13 +88,14 @@ ShowButton.propTypes = { const PureShowButton = memo( ShowButton, - (props: ShowButtonProps, nextProps: ShowButtonProps) => - props.resource === nextProps.resource && - (props.record && nextProps.record - ? props.record.id === nextProps.record.id - : props.record == nextProps.record) && // eslint-disable-line eqeqeq - props.label === nextProps.label && - props.disabled === nextProps.disabled + (prevProps, nextProps) => + prevProps.resource === nextProps.resource && + (prevProps.record && nextProps.record + ? prevProps.record.id === nextProps.record.id + : prevProps.record == nextProps.record) && // eslint-disable-line eqeqeq + prevProps.label === nextProps.label && + prevProps.disabled === nextProps.disabled && + isEqual(prevProps.to, nextProps.to) ); export default PureShowButton;