์ปดํฌ๋ํธ ๋ด ๋๋กญ๋ค์ด ํํฐ๋ฅผ ์ด๊ธฐํ(reset) ํด์ผ ํ๋ ์ํฉ์ด ์์์ต๋๋ค.
์ฒ์์๋ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ฆฌ์ ์ ๊ตฌํํ์์ด์.
const [isReset, setIsReset] = useState(false);
const handleReset = () => {
setKeyword("");
setPage(1);
setTarget(All);
setIsReset(true);
setTimeout(() => setIsReset(false), 1000);
};
<AdminDropdown
isReset={isReset}
/>
setTimeout
์ผ๋ก ๋ฆฌ์
flag๋ฅผ 1์ด ๋ค์ false๋ก ๋ง๋๋ ๊ฒ ๋ถ์์ ํ๊ณ ์ง์ ๋ถํ์Dropdown
์ปดํฌ๋ํธ ๋ด๋ถ์์ isReset
์ ๊ฐ์งํด setLabel
, onValueChange
๋ฑ์ ์ง์ ํธ์ถํด์ผ ํ์Dropdown
์ธ๋ถ์์๋ ๋ด๋ถ์์๋ ๋ถ์ฐ๋์ด ์์ด ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์งisReset
๋์ key
๊ฐ์ ์ฆ๊ฐ์ํค๋ ๋ฐฉ์์ผ๋ก ๋ฆฌํฉํฐ๋ง
const [resetKey, setResetKey] = useState(0);
const handleReset = () => {
setPage(1);
setTarget(All);
setGender(All);
setAgeGroup(All);
setKeyword("");
setResetKey(prev => prev + 1);
};
return (
<div>
<AdminDropdown
key={`target-${resetKey}`}
defaultLabel="์ ์ฒด"
dropdownMenus={filterTargetsDropdownMenus}
onValueChange={handleValueChange}
/>
<AdminDropdown
key={`gender-${resetKey}`}
defaultLabel="์ฑ๋ณ"
dropdownMenus={filterGendersDropdownMenus}
onValueChange={handleValueChange}
/>
<AdminDropdown
key={`age-${resetKey}`}
defaultLabel="์ฐ๋ น"
dropdownMenus={filterAgeGroupsDropdownMenus}
onValueChange={handleValueChange}
/>
</div>
);
key
๋ณ๊ฒฝ์ ๋ฆฌ์กํธ๊ฐ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ์์ ํ ์ธ๋ง์ดํธ โ ๋ฆฌ๋ง์ดํธํ๊ฒ ๋ง๋ญ๋๋ค.Dropdown
๋ด๋ถ ์ํ (useState
, useEffect
๋ฑ)๊ฐ ์์ฐ์ค๋ฝ๊ฒ ์ด๊ธฐํ๋ฉ๋๋ค.React์ key
๋ฅผ ๋จ์ํ ๋ฆฌ์คํธ ๋ ๋๋ง ๊ตฌ๋ถ์ฉ์ด ์๋๋ผ "๋ฆฌ์
ํธ๋ฆฌ๊ฑฐ" ๋ก ์ฌ์ฉํ๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!
์ํ ์ด๊ธฐํ๋ UI ๋ฆฌ์
์ด ํ์ํ ์ํฉ์์ ์ ๊ทน์ ์ผ๋ก ๊ณ ๋ คํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฑธ ์์ผ ๋๊ผ์ต๋๋ค.