@@ -10,6 +10,7 @@ import {
10
10
GridRowId ,
11
11
} from '@mui/x-data-grid' ;
12
12
import { gridRowGroupsToFetchSelector , GridStateInitializer } from '@mui/x-data-grid/internals' ;
13
+ import { unstable_debounce as debounce } from '@mui/utils' ;
13
14
import { GridPrivateApiPro } from '../../../models/gridApiPro' ;
14
15
import { DataGridProProcessedProps } from '../../../models/dataGridProProps' ;
15
16
import { gridGetRowsParamsSelector , gridDataSourceErrorsSelector } from './gridDataSourceSelector' ;
@@ -252,6 +253,8 @@ export const useGridDataSource = (
252
253
} ) ;
253
254
} , [ apiRef ] ) ;
254
255
256
+ const debouncedFetchRows = React . useMemo ( ( ) => debounce ( fetchRows , 0 ) , [ fetchRows ] ) ;
257
+
255
258
const dataSourceApi : GridDataSourceApi = {
256
259
unstable_dataSource : {
257
260
setChildrenLoading,
@@ -269,12 +272,20 @@ export const useGridDataSource = (
269
272
useGridApiMethod ( apiRef , dataSourceApi , 'public' ) ;
270
273
useGridApiMethod ( apiRef , dataSourcePrivateApi , 'private' ) ;
271
274
272
- useGridApiEventHandler ( apiRef , 'sortModelChange' , runIfServerMode ( props . sortingMode , fetchRows ) ) ;
273
- useGridApiEventHandler ( apiRef , 'filterModelChange' , runIfServerMode ( props . filterMode , fetchRows ) ) ;
275
+ useGridApiEventHandler (
276
+ apiRef ,
277
+ 'sortModelChange' ,
278
+ runIfServerMode ( props . sortingMode , debouncedFetchRows ) ,
279
+ ) ;
280
+ useGridApiEventHandler (
281
+ apiRef ,
282
+ 'filterModelChange' ,
283
+ runIfServerMode ( props . filterMode , debouncedFetchRows ) ,
284
+ ) ;
274
285
useGridApiEventHandler (
275
286
apiRef ,
276
287
'paginationModelChange' ,
277
- runIfServerMode ( props . paginationMode , fetchRows ) ,
288
+ runIfServerMode ( props . paginationMode , debouncedFetchRows ) ,
278
289
) ;
279
290
280
291
const isFirstRender = React . useRef ( true ) ;
0 commit comments