Skip to content

Commit d1ab480

Browse files
committed
use memo istead of state and useEffect
1 parent 6279914 commit d1ab480

File tree

1 file changed

+12
-17
lines changed

1 file changed

+12
-17
lines changed

packages/design-picker/src/components/unified-design-picker.tsx

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { recordTracksEvent } from '@automattic/calypso-analytics';
22
import { Button } from '@automattic/components';
33
import clsx from 'clsx';
44
import { useTranslate } from 'i18n-calypso';
5-
import { useCallback, useEffect, useRef, useState } from 'react';
5+
import { useCallback, useMemo, useRef, useState } from 'react';
66
import { useInView } from 'react-intersection-observer';
77
import { SHOW_ALL_SLUG } from '../constants';
88
import { useFilteredDesigns } from '../hooks/use-filtered-designs';
@@ -15,7 +15,7 @@ import NoResults from './no-results';
1515
import PatternAssemblerCta, { usePatternAssemblerCtaData } from './pattern-assembler-cta';
1616
import ThemeCard from './theme-card';
1717
import type { Categorization } from '../hooks/use-categorization';
18-
import type { Category, Design, StyleVariation } from '../types';
18+
import type { Design, StyleVariation } from '../types';
1919
import type { RefCallback } from 'react';
2020
import './style.scss';
2121

@@ -227,26 +227,21 @@ const DesignPicker: React.FC< DesignPickerProps > = ( {
227227
} ) => {
228228
const hasCategories = !! Object.keys( categorization?.categories || {} ).length;
229229
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+
);
233240

234241
const assemblerCtaData = usePatternAssemblerCtaData();
235242

236243
const translate = useTranslate();
237244

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-
250245
return (
251246
<div>
252247
<div className="design-picker__filters">

0 commit comments

Comments
 (0)