๐งจ ๋ฌธ์ ์ํฉ
์ปดํฌ๋ํธ ๋ด ๋๋กญ๋ค์ด ํํฐ๋ฅผ ์ด๊ธฐํ(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
๋ฑ)๊ฐ ์์ฐ์ค๋ฝ๊ฒ ์ด๊ธฐํ๋ฉ๋๋ค. - ์ด์ ๋ฐฉ์๋ณด๋ค ๊น๋ํ๊ณ , reset ์ฑ ์์ ์ธ๋ถ์์๋ง ๊ด๋ฆฌํ ์ ์์ด ์ญํ ์ด ๋ช ํํด์ก์ต๋๋ค.
- ์ ์ ์์ ์ปดํฌ๋ํธ์์๋ ์ด ๋ฐฉ์์ด ๋งค์ฐ ์ ์ฉํ๊ณ ๊ฐ๋ณ๊ฒ ์ฌ์ฉํ ์ ์์.
โ๏ธ ์ธ์ฌ์ดํธ
React์ key
๋ฅผ ๋จ์ํ ๋ฆฌ์คํธ ๋ ๋๋ง ๊ตฌ๋ถ์ฉ์ด ์๋๋ผ "๋ฆฌ์
ํธ๋ฆฌ๊ฑฐ" ๋ก ์ฌ์ฉํ๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!
์ํ ์ด๊ธฐํ๋ UI ๋ฆฌ์
์ด ํ์ํ ์ํฉ์์ ์ ๊ทน์ ์ผ๋ก ๊ณ ๋ คํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฑธ ์์ผ ๋๊ผ์ต๋๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[250512 TIL] use server, use client (1) | 2025.05.12 |
---|---|
[250505 TIL] polling ์ ์ฉ๊ธฐ (0) | 2025.05.05 |
[250418 TIL] Inertia/React ์์ ContextAPI ๋ค๋ฃจ๊ธฐ (0) | 2025.04.18 |
[250411 til] ๋ฐฉํ๋ฒฝ ์ ์ + VPN์์.. (0) | 2025.04.11 |
[250326 TIL] image-rendering, translateZ(0) (0) | 2025.03.26 |