1- import { useCallback , useEffect , useMemo , useState } from "react"
1+ import {
2+ startTransition ,
3+ useCallback ,
4+ useDeferredValue ,
5+ useEffect ,
6+ useMemo ,
7+ useState ,
8+ } from "react"
29import { useSearchParams } from "next/navigation"
310
411import type { FilterOption , TPresetFilters } from "@/lib/types"
@@ -77,23 +84,27 @@ const ProductTable = <T extends { id: string }>({
7784
7885 const updateFilters = useCallback (
7986 ( filters : FilterOption | FilterOption [ ] ) => {
80- setFilters ( ( prevFilters ) => {
81- return prevFilters . map ( ( prevFilter ) => {
82- const filter = Array . isArray ( filters )
83- ? filters . find ( ( f ) => f . title === prevFilter . title )
84- : filters . title === prevFilter . title
85- ? filters
86- : prevFilter
87- if ( ! filter ) return prevFilter
88- return filter
87+ startTransition ( ( ) => {
88+ setFilters ( ( prevFilters ) => {
89+ return prevFilters . map ( ( prevFilter ) => {
90+ const filter = Array . isArray ( filters )
91+ ? filters . find ( ( f ) => f . title === prevFilter . title )
92+ : filters . title === prevFilter . title
93+ ? filters
94+ : prevFilter
95+ if ( ! filter ) return prevFilter
96+ return filter
97+ } )
8998 } )
9099 } )
91100 } ,
92101 [ ]
93102 )
94103
95104 const resetFilters = useCallback ( ( ) => {
96- setFilters ( initialFilters )
105+ startTransition ( ( ) => {
106+ setFilters ( initialFilters )
107+ } )
97108 onResetFilters ?.( )
98109 } , [ initialFilters , onResetFilters ] )
99110
@@ -114,10 +125,7 @@ const ProductTable = <T extends { id: string }>({
114125 } )
115126 } , [ filteredData , presetFilters ] )
116127
117- const activeFiltersCount = useMemo (
118- ( ) => getActiveFiltersCount ( filters ) ,
119- [ filters ]
120- )
128+ const activeFiltersCount = useDeferredValue ( getActiveFiltersCount ( filters ) )
121129
122130 return (
123131 < div >
0 commit comments