React(7)
-
[๋ฆฌ์กํธ] ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ (๊ณตํต ์ปดํฌ๋ํธ ๋ถ๋ฆฌ. CheckBox)
์ด๋ฒ ์์ ์์๋ ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํ ๊ณผ์ ์์ ๋ฐ์ํ ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ์ ๋ฆฌํ๊ณ , ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ฐ ์ฝ๋ ๋ฆฌํฉํ ๋ง ์งํํ์์ต๋๋ค. 1. ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํโ ์ฃผ์ ๊ตฌํ ๋ด์ฉ๋น๋ฐ๋ฒํธ ์ ํจ์ฑ ๊ฒ์ฌ๋น๋ฐ๋ฒํธ ์ ๋ ฅ๊ฐ์ด ๋น์ด ์์ผ๋ฉด “๊ฐ์ ์ ๋ ฅํ์ธ์” ์๋ฌ ์ถ๋ ฅ์ ๋ ฅ์ด ๋์ด ์๋ ์ํ๋ผ๋ฉด “ํ์ ์ค๋ฅ” ์๋ฌ ์ถ๋ ฅ์์ด๋ ์ค๋ณต ํ์ธ“์ค๋ณต ํ์ธ” ๋ฒํผ ํด๋ฆญ ์, ์๋ฒ์์ ํด๋น ์์ด๋์ ์กด์ฌ ์ฌ๋ถ ํ์ธ์ด๋ฏธ ์กด์ฌํ๋ฉด “์ด๋ฏธ ์กด์ฌํ๋ ์์ด๋์ ๋๋ค” ๋ฉ์์ง ํ์์กด์ฌํ์ง ์์ผ๋ฉด “์ฌ์ฉ ๊ฐ๋ฅํ ์์ด๋์ ๋๋ค” ๋ฉ์์ง ํ์๋น๋ฐ๋ฒํธ ์ํธํ ์ฒ๋ฆฌ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ํ๋๋ฅผ ๋จ์ผํํ๊ณ , ๋ด๋ถ์ ์ผ๋ก ๋น๋ฐ๋ฒํธ์ ๋น๋ฐ๋ฒํธ ํ์ธ ํ๋ ๋ชจ๋ ์ํธํ ์ฒ๋ฆฌํ์๊ฐ์ ๊ฒฝ๋ก๋ณ Role ๊ตฌ๋ถ์์ฌ์ฉ/์ผ๋ฐ ์ฌ์ฉ์์ฉ ํ์๊ฐ์ ํ์ด์ง๊ฐ ๋ถ๋ฆฌ๋์ด ์์ผ๋ฏ๋กlocation.pa..
2025.10.20 -
useInfiniteQuery โ useInView๋ก ๋ฌดํ ์คํฌ๋กค ๊ตฌํํ๊ธฐ
์ต์ข UI๋ณ์ ํ์ด์ง์ ๋ฆฌ๋ทฐ ๋ฌดํ ์คํฌ๋กค ์ด๋ฒคํธ ๋์ ์ ์ํ๊ธฐ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ๋ ํ ํ์ด์ง์ 20๊ฐ์ฉ ํ์๋๋ฉฐ, ์ฌ์ฉ์๊ฐ ํ๋ฉด์ ๋ง์ง๋ง ๋ฐ์ดํฐ์ ๋๋ฌํ๋ฉด ์๋์ผ๋ก ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ ์ด์ด์ ํ์๋๋๋ก ๊ตฌํํ์ต๋๋ค. ์ด๋ฒคํธ ๋์ ๊ตฌํํ๊ธฐ ๐ ์ฐธ๊ณ ์๋ฃ useInfiniteQuery๋ก ๋ฌดํ์คํฌ๋กค ๊ตฌํํ๊ธฐ | ์ฌ๋ฆฌ๋ธ์ ํ ํฌ๋ธ๋ก๊ทธ๋ฌดํ์คํฌ๋กค ๊ตฌํ ๋ฐฉ๋ฒ๊ณผ ๋ค๋ก๊ฐ๊ธฐ ์ ์คํฌ๋กค ์ ์งํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค.oliveyoung.tech useInfiniteQuery | TanStack Query React Docstsx const { fetchNextPage, fetchPreviousPage, hasNextPage, hasPreviousPage, isFetchingNextPage, isFetchingPreviousPage..
2025.08.26 -
[๋ฆฌ์กํธ] ๋ด๋น๊ฒ์ด์ ๋ฐ ๊ฒ์ ๊ตฌํ (feat. <form> ํ๊ทธ , ํ์ํ ์๊ฐ์?)
๋ด๋น๊ฒ์ด์ ๋ฐ์์ ํน์ ํค์๋๋ก ๊ฒ์์ ์๋ํ๋ฉด, ๊ฒ์ ํ์ด์ง๋ก ์ด๋ํ ๋ค ํด๋น ํค์๋์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ํ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค.์ด๋ฒ ํฌ์คํธ์์๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก API ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๋ ๊ณผ์ ์์ ๋ง์ฃผ์ณค๋ ๋ฌธ์ ๋ค๊ณผ ์ด๋ฅผ ํตํด ์ป์ ์ธ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค. ์ต์ข UI๊ฒ์ ๊ณผ์ ์ด๋ฒคํธ ๋์ ์ ์ํ๊ธฐ์ ๋ ฅ ๊ฐ์ ๋ฐ๋ฅธ ๋ณ์ ์ ๋ณด ์ถ๋ ฅ์ฌ์ฉ์๊ฐ input ํ๊ทธ์ ๊ฐ์ ์ ๋ ฅํ ๋ค ๊ฒ์ ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋ Enter ํค๋ฅผ ๋๋ฅด๋ฉด, ํด๋น ์ด๋ฒคํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ด์ง๊ฐ ์ด๋ํ๊ณ ์ ๋ ฅํ ํค์๋๋ฅผ ์ด์ฉํด API ์์ฒญ์ด ์ํ๋์ด ํน์ ๋ณ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํฉ๋๋ค. ์ด๋ฒคํธ ์ฒ๋ฆฌ ๊ตฌํํ๊ธฐ ๋ฐ์ดํฐ ์ ๋ ฅํ๊ธฐ ๐ ์ฐธ๊ณ ์๋ฃ input ํ๊ทธ ์ฌ์ฉ ์ form ํ๊ทธ ์ฌ์ฉ ์ฌ๋ถ - ์ธํ๋ฐ |..
2025.08.19 -
[๋ฆฌ์กํธ] ๋ก๊ทธ์ธ ์ด๋ฒคํธ ์ฒ๋ฆฌํ๊ธฐ (API ์ฐ๋, ์๋ฌ ์ฒ๋ฆฌ, ๋น๋ฐ๋ฒํธ ์ํธํ, ํ์ด์ง ์ด๋)
์ต์ข UI์ด๋ฒคํธ ๋์ ์ ์ํ๊ธฐ ํ๋์: start / end๋ ธ๋์: ์กฐ๊ฑด ์ด๋ก์: ์กฐ๊ฑด ์ฑ๊ณต ์ ์ํ๋๋ ์์ ๋นจ๊ฐ์: ์กฐ๊ฑด ์คํจ ์ ์ํ๋๋ ์์ ๋น๋ฐ๋ฒํธ ์ํธํ ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ์ ์๋์ผ๋ก ์ํธํ๊ฐ ์งํ๋๊ณ ์์ ์ฒดํฌ๋ฐ์ค ํด๋ฆญ ์ ์ ๋ ฅํ ๋น๋ฐ๋ฒํธ๊ฐ ๋ณด์ด๋๋ก ํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์๋ฌ ์ถ๋ ฅ1. ์์ด๋ ๋ฐ ๋น๋ฐ๋ฒํธ ๋ฏธ์ ๋ ฅ๋ฏธ์ ๋ ฅ ํ ๋ก๊ทธ์ธ ์๋ ์ ์๋์ ๊ฐ์ด ๋นจ๊ฐ ๊ฒฝ๊ณ ๋ฌธ์ด ์ถ๋ ฅ๋๋๋ก ๊ตฌํํ ์์ ์ ๋๋ค. 2. ์กด์ฌํ์ง ์์ ์์ด๋ & ๋น๋ฐ๋ฒํธ ๋ถ์ผ์น ์กด์ฌํ์ง ์์ ์์ด๋์ด๊ฑฐ๋ ์ฌ๋ฐ๋ฅด์ง ์์ ๋น๋ฐ๋ฒํธ๋ก ๋ก๊ทธ์ธ ์๋ ์ ์๋์ ๊ฐ์ด ๋นจ๊ฐ ๊ฒฝ๊ณ ๋ฌธ์ด ์ถ๋ ฅ๋๋ฉฐ, ๋น๋ฐ๋ฒํธ ์ ๋ ฅ๋์ ์๋ ๋ฐ์ดํฐ๊ฐ ์ด๊ธฐํ๋ฉ๋๋ค. ๐ก ๊ฒฝ๊ณ ๋ฌธ์ด “์์ด๋ ๋๋ ๋น๋ฐ๋ฒํธ ๋ถ์ผ์น”์ธ ์ด์ ์์ด๋ ์กด์ฌ ์ฌ๋ถ๋ฅผ ๊ณต๊ฒฉ์์๊ฒ ๋ ธ์ถํ์ง ์..
2025.08.13 -
[๋ฆฌ์กํธ] ๋ฐฑ์๋ API ํธ์ถ (feat. Get ์์ฒญ)
ํ๋ก ํธ์๋์ ๋ฐฑ์๋๋ฅผ ๋ชจ๋ ๊ตฌํํ๋ ํ์คํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ธฐ์ด ํ์ต์ ํ๊ณ ์์ต๋๋ค.์ด์ ๊น์ง๋ UI ๊ตฌํ์๋ง ์ง์คํ๊ณ ์ด์ ๋ฐฑ์๋์์ ์ฐ๋ ์์ ์ ์์ํ๋ ค๊ณ ํฉ๋๋ค. HTTP ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ์ํด Fetch์ Axios ์ค ๋์ ํน์ง์ ๋น๊ตํ ๊ฒฐ๊ณผ Axios๋ฅผ ํตํด ๊ฐ๋ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. Axios๋ฅผ ์ ํํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 1. ์๋ ์ง๋ ฌํ ๋ฐ ์๋ฌ ์ฒ๋ฆฌJSON ๋ฐ์ดํฐ ์๋ ๋ณํ ๋ฐ ์๋ ์๋ฌ ์ฒ๋ฆฌ๋ก ์ฝ๋ ๊ธธ์ด๋ฅผ ๋จ์ถํ ์ ์์ต๋๋ค. 2. ๋ค์ํ ๊ธฐ๋ฅ ์ง์์์ฒญ ํ์์์ ์ค์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ์์ฒญ/์๋ต ์ธํฐ์ ํฐ๋ฅผ ํตํด ์์ฒญ ์ ํ๋ก ์์ ์ฒ๋ฆฌ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. 3. ํ์ต ๋จ๊ณ์ ์ ํฉ์ค์น๋ง ํ๋ค๋ฉด ๋ณต์กํ ์ค์ ์์ด๋ ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.์ด๋ฏธ ๊ตฌํ๋ ์๋ํ ๊ธฐ๋ฅ์ ํตํด ์ค์๋ฅผ ์ค์ผ ์ ์์ต๋..
2025.08.11 -
[๋ฆฌ์กํธ] fetch์ axios ์ฐจ์ด
Fetch๋?Fetch API๋ ๋คํธ์ํฌ ์์ฒญ์ ์ํด fetch()๋ผ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ๋ธ๋ผ์ฐ์ ๋ด์ฅ ์ธํฐํ์ด์ค์ ๋๋ค. ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ๋ด์ฅ๋์ด ์์ด ๋ณ๋์ ์ค์น๊ฐ ํ์ ์์ต๋๋ค. ๋น๋๊ธฐ ์์ ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก Promise๊ธฐ๋ฐ๋ก ์์ฒญ ๋ฐ ์๋ต์ ์ฒ๋ฆฌํฉ๋๋ค. HTTP์ 404 or 500 ์๋ฌ๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ต ๊ฐ์ฒด์ ok์์ฑ์ ํ์ธํ ํ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํฉ๋๋ค. (. catch ์ฌ์ฉ)์๋ต ๋ณธ๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํธ๋ฆผ ํํ๋ก ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ๋ฐ์ดํฐ ์ง๋ ฌํ๋ฅผ ํด์ผ ํฉ๋๋ค. ๐ก Promise๋๋ณด๊ธฐ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒด์ ๋๋ค. [๋คํธ์ํฌ ์์ฒญ]์ฑ๊ณต ์ resolve promise ์๋ต ์คํจ ์ reject promise ์๋ต ..
2025.08.11