diff --git a/components/lib/datatable/BodyCell.js b/components/lib/datatable/BodyCell.js
index 614d4c379c..0ce466d8be 100644
--- a/components/lib/datatable/BodyCell.js
+++ b/components/lib/datatable/BodyCell.js
@@ -691,14 +691,22 @@ export const RadioCheckCell = React.memo(
RadioCheckCell.displayName = 'RadioCheckCell';
+const defaultKeysToCompare = ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'];
+
export const BodyCell = React.memo(
(props) => {
return | ;
},
(prevProps, nextProps) => {
- const keysToCompare = ['field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData', 'frozenCol', 'alignFrozenCol'];
+ if (nextProps.cellMemo === false) return false;
- return ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
+ const memoProps = nextProps.cellMemoProps;
+ const keysToCompare = Array.isArray(memoProps) && memoProps.every((prop) => typeof prop === 'string') ? memoProps : defaultKeysToCompare;
+
+ const memoPropsDepth = nextProps.cellMemoPropsDepth;
+ const depth = typeof memoPropsDepth === 'number' && memoPropsDepth > 0 ? memoPropsDepth : 1;
+
+ return ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare, depth);
}
);
diff --git a/components/lib/datatable/BodyRow.js b/components/lib/datatable/BodyRow.js
index 4affae1ac4..cbe875defb 100644
--- a/components/lib/datatable/BodyRow.js
+++ b/components/lib/datatable/BodyRow.js
@@ -605,6 +605,9 @@ export const BodyRow = React.memo((props) => {
const cellProps = mergeProps({
hostName: props.hostName,
allowCellSelection: props.allowCellSelection,
+ cellMemo: props.cellMemo,
+ cellMemoProps: props.cellMemoProps,
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
cellClassName: props.cellClassName,
checkIcon: props.checkIcon,
collapsedRowIcon: props.collapsedRowIcon,
diff --git a/components/lib/datatable/DataTable.js b/components/lib/datatable/DataTable.js
index c8aa4b56f8..18c87f2873 100644
--- a/components/lib/datatable/DataTable.js
+++ b/components/lib/datatable/DataTable.js
@@ -1688,6 +1688,9 @@ export const DataTable = React.forwardRef((inProps, ref) => {
{
extends Omit