- ๊ฒ์์ฐฝ ์์ฒญ์ ์ฐ๊ด ๊ฒ์์ด ์๋ตํ๋ API ์์ฑ #71
- ๊ฒ์์ฐฝ์์ ๊ฒ์์ด ์
๋ ฅํ๊ธฐ #72
- ์ฐ๊ด ๊ฒ์์ด ํด๋ฆญ ์ ์ด๋ฒคํธ ๋ฐ์ #74
- ์ฃผ์ ์ฅ์ ๊ฒ์ ๊ธฐ๋ฅ์ ์์ฑํ๋ค.


๊ฒ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ ๋ฐ ์ผ์นํ๋ ๊ฒ์์ด ๊ฐ์กฐ


โuseDeferredValueโ vs โdebounceโ
ํ๊ธ์ด ๋ฏธ์์ฑ๋ ๋จ์ด์ผ ๊ฒฝ์ฐ(ex. ๊ฐใด) ๊ฒ์ API์์ ์ฐ๊ด ๊ฒ์์ด๊ฐ ์๋ค๊ณ ์๋ตํด์ผ ํ๋?
์ผ๋จ ์ฐ๊ด ๊ฒ์์ด๊ฐ ์๋ค๊ณ ์ถ๋ ฅํจ
- ํ๋ก ํธ์ชฝ์์ ๊ฒ์์ด ์์ ์์ ๋๋ ๋ชจ์ ๋ฟ์ผ ๊ฒฝ์ฐ API ๋ณด๋ด์ง ์๋๋ก ์์ธ ์ฒ๋ฆฌ
โ์ญโ ๊ฐ์ด ๋ง์ ์ฐ๊ด ๊ฒ์์ด๊ฐ ์ถ๋ ฅํ ๊ฒฝ์ฐ ๋ฆฌ์คํธ ํฌ๊ธฐ์ ์ ํ์ ํด์ผ๋ ๊น?
์ผ๋จ ๋ค ์ถ๋ ฅ ์ํค๊ณ ์์
- ์ต๋ 6๊ฐ์ ์ฐ๊ด๊ฒ์์ด๊ฐ ๋ณด์ด๊ณ ๊ทธ ์ด์์ผ ๊ฒฝ์ฐ ์คํฌ๋กค ๋๋ ๋๋๊ทธ๋ก ๋ ๋ณผ ์ ์๋๋ก ํจ
๋ฆฌ์กํธ๋ก ๋ฐฐ์ด์ ์ถ๋ ฅ์ key๊ฐ์ ์ง์ด ๋ฃ์ด์ค ๋ api์์ id๋ ๊ฐ์ด ๋ณด๋ด์ค์ผ ํ ๊ฒ ๊ฐ๋ค.
- ์ผ๋จ ๋ฐฐ์ด์ index๋ฅผ ์ง์ด ๋ฃ์ด์ฃผ๊ณ ์์
์ฐ๊ด ๊ฒ์์ด ํด๋ฆญ์ ํด๋น ์ง์ญ ๋ง์ปค๋ก ์ด๋ ๋ฐ ์์ธ๋ชจ๋ฌ์ฐฝ ์ถ๋ ฅ์ ๊ตฌํํ๊ธฐ ์ํด ๋ง์ ์ํ๋ฅผ ์ ์ญ์ผ๋ก ๋ฐ๊พธ๋ ๋๊ณต์ฌ๊ฐ ํ์ํด๋ณด์
- ์ด๋ป๊ฒ ์์ํ ์ง ๋ชจ๋ฅด๊ฒ ์โฆ
- ๋ง์ปค, ๋ค์ด๋ฒ ์ง๋๋ฅผ ๋ชจ๋ ์ ์ญ์ผ๋ก ๋ฝ์์ผ ๋ ๊ฒ ๊ฐ๊ณ ์ฐ๊ด๊ฒ์์ด ํด๋ฆญ ์ ์ด๋ค ๋ง์ปค์ธ์ง ์๋ณํ๋ ๊ฒ๋ ์ฝ์ง ์์ ๋ณด์
์ฐ๊ด๊ฒ์์ด ์ค๋ฅธ์ชฝ ๋๋ณด๊ธฐ ํ์๋ง๊ณ ๊ทธ๋ฅ hover์ ์ด๋ก๊ฒ๋ง ํ๋๊ฒ ๊น๋ํด๋ณด์ด๋๋ฐ ๋๋ณด๊ธฐ ๋ฃ์ง ๋ง๊น?
- ์ผ๋จ ๋๋ณด๊ธฐ ๋ฃ๊ธฐ ๊ท์ฐฎ์์ ๊ทธ๋ฐ๊ฑฐ ์๋
Seoul Router ์์น์ ๋ฐ๋ฅธ ๋ผ์ดํ
์์
// before
router.get('/', seoulController.allAreas);
router.get('/:areaName', seoulController.pastInfo);
router.get('/search', seoulController.searchArea);
// after
router.get('/', seoulController.allAreas);
router.get('/search', seoulController.searchArea);
router.get('/:areaName', seoulController.pastInfo);
- before์ ๊ฐ์ด ๋ผ์ฐํฐ๋ฅผ ์ ์ธํ์ ๊ฒฝ์ฐ api/seoul/search?name=<๊ฒ์์ด> API๋ฅผ ์์ฒญํ ๊ฒฝ์ฐ /:areaname์ผ๋ก ๋ผ์ฐํ
์ด ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์
- ๊ทธ๋์ /:areaname์ ์๋ก ๊ฒ์ ๋ผ์ฐํฐ์ ์์น๋ฅผ ์ฎ๊ฒจ ํด๊ฒฐ
useTransition() ์ฌ์ฉ์ ํ๊ธ ์์, ๋ชจ์ ๋ถ๋ฆฌ ํ์
const onChangeSearchBar: React.ChangeEventHandler<
HTMLInputElement
> = async e => {
startTransition(() => {
setSearchAreaName(e.target.value);
});
};
- startTransition()์ผ๋ก setSearchAreaName์ ์ฐ์ ์์๊ฐ ๋ ๋ฎ๋ค๋ ๊ฒ์ ์๋ฆด ๊ฒฝ์ฐ ์ค๊ฐ์ pending๋๋ ์๊ฐ ๋๋ฌธ์ ํ๊ธ์ด๋ ์์๊ณผ ๋ชจ์์ด ๋ถ๋ฆฌ๋๋ ๊ฒ ๊ฐ๋ค.
- useTransition ๋์ useDeferredValue์ ์ฌ์ฉํ์ฌ ๊ตฌํ
useDeferredValue์ ์ด์ฉํด์ ๊ฒ์ API๋ฅผ ์ต์ ํ ์์ผ๋ณด๋ ค ํ์ผ๋ ์ ๋์ํ๋์ง ๋ชจ๋ฅด๊ฒ ์
- onchange์์ ๋ก๊ทธ๋ฅผ ์ฐ์ด๋ณด๋ ๋ญ ์ฐจ์ด๊ฐ ์๋์ง ๋ชจ๋ฆ
24์๊ฐ ์ธ๊ตฌ๋ฐ๋ ์ฐจํธ ์บ์ฑ์ ๋ํด jotai-tanstack-query๋ฅผ ์ด์ฉํ๋ฉด ์ด๋จ๊น?
์ฐ๊ด๊ฒ์์ด ๋ฆฌ์คํธ ๋๋น ๋ฐ์ํ์ผ๋ก ์ด๋ป๊ฒ ๊ตฌํํ ์ง ์ด๋ ค์ ๋ณด์
- ใ
ใ
๋์๊ฒ ๋์ ์์ฒญํด์ผ๋จ