@@ -2,7 +2,7 @@ import { recordTracksEvent } from '@automattic/calypso-analytics';
2
2
import { Button } from '@automattic/components' ;
3
3
import clsx from 'clsx' ;
4
4
import { useTranslate } from 'i18n-calypso' ;
5
- import { useCallback , useEffect , useRef , useState } from 'react' ;
5
+ import { useCallback , useMemo , useRef , useState } from 'react' ;
6
6
import { useInView } from 'react-intersection-observer' ;
7
7
import { SHOW_ALL_SLUG } from '../constants' ;
8
8
import { useFilteredDesigns } from '../hooks/use-filtered-designs' ;
@@ -15,7 +15,7 @@ import NoResults from './no-results';
15
15
import PatternAssemblerCta , { usePatternAssemblerCtaData } from './pattern-assembler-cta' ;
16
16
import ThemeCard from './theme-card' ;
17
17
import type { Categorization } from '../hooks/use-categorization' ;
18
- import type { Category , Design , StyleVariation } from '../types' ;
18
+ import type { Design , StyleVariation } from '../types' ;
19
19
import type { RefCallback } from 'react' ;
20
20
import './style.scss' ;
21
21
@@ -227,26 +227,21 @@ const DesignPicker: React.FC< DesignPickerProps > = ( {
227
227
} ) => {
228
228
const hasCategories = ! ! Object . keys ( categorization ?. categories || { } ) . length ;
229
229
const filteredDesigns = useFilteredDesigns ( designs , categorization ) ;
230
- const features = [ 'blog' , 'magazine' , 'portfolio' , 'podcast' , 'store' ] ;
231
- const [ featureCategories , setFeatureCategories ] = useState < Category [ ] > ( [ ] ) ;
232
- const [ subjectCategories , setSubjectCategories ] = useState < Category [ ] > ( [ ] ) ;
230
+ const features = [ 'blog' , 'portfolio' , 'podcast' , 'store' ] ;
231
+ const featureCategories = useMemo (
232
+ ( ) => ( categorization ?. categories || [ ] ) . filter ( ( { slug } ) => features . includes ( slug ) ) ,
233
+ [ categorization ?. categories ]
234
+ ) ;
235
+ const subjectCategories = useMemo (
236
+ ( ) =>
237
+ ( categorization ?. categories || [ ] ) . filter ( ( { slug } ) => ! features . includes ( slug ) ) ,
238
+ [ categorization ?. categories ]
239
+ ) ;
233
240
234
241
const assemblerCtaData = usePatternAssemblerCtaData ( ) ;
235
242
236
243
const translate = useTranslate ( ) ;
237
244
238
- useEffect ( ( ) => {
239
- if ( ! categorization ?. categories ?. length ) {
240
- return ;
241
- }
242
- setFeatureCategories (
243
- categorization . categories . filter ( ( { slug } ) => features . includes ( slug ) )
244
- ) ;
245
- setSubjectCategories (
246
- categorization . categories . filter ( ( { slug } ) => ! features . includes ( slug ) )
247
- ) ;
248
- } , [ categorization ?. categories ] ) ;
249
-
250
245
return (
251
246
< div >
252
247
< div className = "design-picker__filters" >
0 commit comments