diff --git a/CHANGELOG.md b/CHANGELOG.md index 66d0c2fee3f..3f2037e508b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ **Bug fixes** - Reverted removal of `toggleOpen` method from `EuiNavDrawer` ([#2682](https://github.com/elastic/eui/pull/2682)) +- Improved `EuiDataGrid` update performance ([#2676](https://github.com/elastic/eui/pull/2676)) ## [`17.2.1`](https://github.com/elastic/eui/tree/v17.2.1) diff --git a/src/components/datagrid/column_selector.tsx b/src/components/datagrid/column_selector.tsx index b65d406ab6c..e4cad45b2bf 100644 --- a/src/components/datagrid/column_selector.tsx +++ b/src/components/datagrid/column_selector.tsx @@ -1,6 +1,7 @@ import React, { Fragment, useState, + useMemo, ReactChild, ReactElement, ChangeEvent, @@ -199,11 +200,18 @@ export const useColumnSelector = ( ); - const orderedVisibleColumns = visibleColumns - .map( - columnId => - availableColumns.find(({ id }) => id === columnId) as EuiDataGridColumn // cast to avoid `undefined`, it filters those out next - ) - .filter(column => column != null); + const orderedVisibleColumns = useMemo( + () => + visibleColumns + .map( + columnId => + availableColumns.find( + ({ id }) => id === columnId + ) as EuiDataGridColumn // cast to avoid `undefined`, it filters those out next + ) + .filter(column => column != null), + [availableColumns, visibleColumns] + ); + return [columnSelector, orderedVisibleColumns]; };