From 0c415be8ee983f4615bd697f8f52f3ba0f44108a Mon Sep 17 00:00:00 2001 From: gbuomprisco Date: Fri, 30 Aug 2024 17:05:57 +0200 Subject: [PATCH] Refactor account-selector to use useMemo instead of useEffect Replaced useEffect with useMemo for computing the account value. This simplifies the state management and ensures that the value is memoized based on the selectedAccount prop. --- .../accounts/src/components/account-selector.tsx | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/packages/features/accounts/src/components/account-selector.tsx b/packages/features/accounts/src/components/account-selector.tsx index 3879de379..fc7eda3a5 100644 --- a/packages/features/accounts/src/components/account-selector.tsx +++ b/packages/features/accounts/src/components/account-selector.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect, useState } from 'react'; +import { useMemo, useState } from 'react'; import { CaretSortIcon, PersonIcon } from '@radix-ui/react-icons'; import { CheckCircle, Plus } from 'lucide-react'; @@ -59,16 +59,11 @@ export function AccountSelector({ }: React.PropsWithChildren) { const [open, setOpen] = useState(false); const [isCreatingAccount, setIsCreatingAccount] = useState(false); - - const [value, setValue] = useState( - selectedAccount ?? PERSONAL_ACCOUNT_SLUG, - ); - const { t } = useTranslation('teams'); const personalData = usePersonalAccountData(userId); - useEffect(() => { - setValue(selectedAccount ?? PERSONAL_ACCOUNT_SLUG); + const value = useMemo(() => { + return selectedAccount ?? PERSONAL_ACCOUNT_SLUG; }, [selectedAccount]); const Icon = (props: { item: string }) => { @@ -201,7 +196,6 @@ export function AccountSelector({ key={account.value} value={account.value ?? ''} onSelect={(currentValue) => { - setValue(currentValue === value ? '' : currentValue); setOpen(false); if (onAccountChange) {