๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
-
ํ๋ฉด ๋๋น๋ฅผ ์ด๊ณผํ์ง ์๋ ํดํ ๋ง๋ค๊ธฐ w.ReactTECH 2024. 4. 28. 21:08
ํดํ์ ํด๋ฆญํ๊ฑฐ๋ ๋๋ ๋ง์ฐ์ค๋ฅผ ํน์ ๊ตฌ์ฑ ์์์ ๊ฐ์ ธ๊ฐ์ ๋(hover ํ์ ๋) ์ํฉ์ ๋ง๋ ๋์๋ง์ด๋ ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค. ํดํ์ ์ง์ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ ์ค, hover ์์๊ฐ ํ๋ฉด ์ ์ค๋ฅธ์ชฝ ๋์ ์์นํ ๋ ํดํ์ ์ปจํ ์ด๋๊ฐ ํ๋ฉด ๋๋น๋ฅผ ๋์ด๊ฐ๋ ํ์์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ํ์์ ์ฌ์ฉ์๊ฐ ์์ํ ๋๋ก ์ธํฐํ์ด์ค๊ฐ ๋์ํ์ง ์๊ณ , ํดํ์ ๋ด์ฉ์ ํ์ธํ๊ธฐ ์ํด ํ๋ฉด์ ์คํฌ๋กคํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ํดํฉ๋๋ค. ๋ฐ๋ผ์ ์์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ ํ์ฌ ํดํ์ ์ปจํ ์ด๋๊ฐ ํ๋ฉด์ ๊ฐ๋ก ๊ธธ์ด๋ฅผ ๋์ด๊ฐ์ง ์๋๋ก ํดํ์ ์์น๋ฅผ ์กฐ์ ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฐ์ ์์ ์ ํดํ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.import styles from './tooltip.module.css';import IconQna..
-
๋ฆฌ์กํธ์์ requestAnimationFrame ์ฌ์ฉ ์ ์ฃผ์ํ ์ TECH 2024. 3. 17. 20:41
๋ฆฌ์กํธ์์ requestAnimationFrame API๋ฅผ ์ฌ์ฉํ๋ฉด์ ๊ฒช์๋ ๋ฌธ์ ๋ฅผ ๊ณต์ ํด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๐ ๋ฌธ์ ๊ฐ ๋์๋ ์ฝ๋ function AnimationSection() { const [count, setCount] = useState(0); const text = 'welcome to ttaerrim world'.toUpperCase(); const textRef = useRef(null); const animate = () => { const width = textRef.current?.scrollWidth; if (width) { if (count > width) { setCount(0); } else { setCount((c) => c + 10); } } requestRef.curren..
-
React Hook Form์ ์๋ก ๋น์ทํ ๊ธฐ๋ฅ๋ค์ ๋น๊ตํด ๋ณด์TECH 2024. 2. 3. 15:46
์ด๋ฒ ํฌ์คํ ์์๋ React Hook Form์ ์ฌ์ฉํ๋ฉด์ ๋๊ผ๋ ๋น์ทํ ๊ธฐ๋ฅ์ ํ๋ API๋ค์ ๋น๊ตํ๊ณ ์ฌ์ฉํ๋ฉฐ ๋๋ ์ ๋ค์ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค. 1๏ธโฃ Controller vs. useController AntD, MUI์ ๊ฐ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ปค์คํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ๋ Controller๋ useController๋ฅผ ์ฌ์ฉํ์ฌ React Hook Form์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค. Controller function Component() { const { control } = useForm(); return ( ( )} /> ) } Controller๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋๊ผ๋ ์ ์, Controller์ render ์์ฑ์ return ๋ฌธ์์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ์ ์์ฑ์ด ๋ง์์ง์๋ก, ๋๋ ํ ์ปดํฌ..
-
useState, ํด๋ก์ ๋ฅผ ํ์ฉํ์ฌ ๋์ํ๋ค๊ณ ?TECH 2024. 1. 27. 21:48
์ด๋ฒ ํฌ์คํ ์์๋ ํด๋ก์ ์ ๋ํด์ ๊ฐ๋จํ ์์๋ณด๊ณ , ํด๋ก์ ๊ฐ ํ์ฉ๋๋ ์์ ์ค ํ๋์ธ useState์ ๋ด๋ถ ๋์ ๋ฐฉ์์ ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. โ๏ธ ํด๋ก์ ๋? ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฌ์ฉ๋๋ ์ค์ํ ํน์ฑ ์ค ํ๋๋ก, ํจ์์ ๊ทธ ํจ์๊ฐ ์ ์ธ๋ ๋ ์์ปฌ ํ๊ฒฝ๊ณผ์ ์กฐํฉ์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ ์์ปฌ ์ค์ฝํ๋ฅผ ๋ฐ๋ฅด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ํ์์ ๋๋ค. W3C School์์๋ ํด๋ก์ ๋ฅผ ํจ์๊ฐ privateํ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค๊ณ ์ค๋ช ํฉ๋๋ค. ์ด ์ค๋ช ์ด ํด๋ก์ ์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ดํดํ๋ ๋ฐ ๋์์ด ๋์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ ์์ปฌ ์ค์ฝํ๋? ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํจ์๊ฐ ํธ์ถ๋๋ ์์น๊ฐ ์๋ ํจ์๋ฅผ ์ด๋์ ์ ์ํ๋์ง์ ๋ฐ๋ผ ํจ์์ ์์ ์ค์ฝํ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์์ ์ค์ฝํ์ ๋ํ ์ฐธ์กฐ๋ ํจ์ ์ ์๊ฐ..
-
React์์ Event Handler๋ ์ด๋ป๊ฒ ๋์ํ ๊น์?TECH 2024. 1. 11. 16:37
๋ชจ๋ฝ ์๋น์ค ๊ฐ๋ฐ ๋น์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ ์ ์ด ์์์ต๋๋ค. ๋๋ฃ๋ถ๊ป์ ๋จ๊ฒจ ์ฃผ์ , ์ด๋ฒคํธ ์์ ๋์ ๋ ธ๋๋ง๋ค ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ์์ ๋ํ ์ฝ๋ฉํธ์์ต๋๋ค. ์ ๋ ๋ฆฌ์กํธ๋ก ๊ฐ๋ฐ์ ํ๋ฉด์ ์ด๋ฒคํธ ์์์ ํ์ฉํด ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํ ๋นํ ์ ์ด ๋จ์ฐ์ฝ ๋จ ํ ๋ฒ๋ ์์๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ์ ์ ํ ์ ๊ทผ์ผ๋ก ๋๊ปด์ก์ต๋๋ค. ๋ฆฌ๋ทฐ๋ฐ์ ๋ถ๋ถ โฌ๏ธ export default function MapModal() { const onClickAddressListItem = (e: Event) => { // ์๋ต }; return ( {addressData.map((address) => ( {์ฃผ์} ))} ); } ์ฝ๋ ๋ฆฌ๋ทฐ โฌ๏ธ ์ฝ๋ ๋ฆฌ๋ทฐ์์๋ ๋ฆฌ์กํธ์์ ๋ฑ๋กํ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ๊ฐ๋จํ๊ฒ ์กฐ์ฌํด ๋ณด..
-
Zero Runtime CSS-in-JS์ ๋ํด ์์๋ณด์TECH 2024. 1. 6. 23:02
์ต๊ทผ์ ์งํํ ํ๋ก์ ํธ์์ ์์ฆ์ ์ฃผ๋ชฉ๋ฐ๊ณ ์๋ Zero Runtime CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Vanilla Extract๋ฅผ ์ฌ์ฉํด ๋ณด์์ต๋๋ค. Vanilla Extract๋ ์ปดํ์ผ ํ์์ CSS ํ์ผ์ ์์ฑํ์ฌ ๊ธฐ์กด ๋ฐํ์์ ์์ฑ๋๋ CSS-in-JS๋ณด๋ค ์ฑ๋ฅ์์ ์ด์ ์ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ธฐ์กด์ CSS-in-JS์๋ ์ด๋ค ์ฑ๋ฅ์ ์ธ ๋ฌธ์ ๊ฐ ์์๊ธฐ ๋๋ฌธ์ Zero Runtime CSS-in-JS ๊ธฐ์ ์ด ๋ ์ค๋ฅด๊ฒ ๋์์๊น์? ์ด ํฌ์คํ ์์๋ ๋ฐํ์ CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํน์ง๊ณผ ๋ฌธ์ ๋ ๋ฌด์์ธ์ง, ๊ทธ๋ฆฌ๊ณ Zero Runtime ์ ๊ทผ ๋ฐฉ์์ด ๊ทธ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. CSS ์ ์ฉ ๊ณผ์ CSS๊ฐ ์น ํ์ด์ง์ ์ ์ฉ๋๋ ๊ณผ์ ๋ถํฐ ์์๋ด ์๋ค. ๋คํธ..
-
React์์ TMap API ์ฌ์ฉํ๊ธฐTECH 2023. 12. 30. 14:48
์ด ๊ธ์์๋ ๋ค์ด๋ฒ ๋ถ์คํธ์บ ํ ๋ด์ ๋ชจ๊ฐ์ฝ ๋ชจ์ง/๊ด๋ฆฌ ํ๋ซํผ์ธ ๋ชจ๋ฝ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ฉฐ TMap API๋ฅผ ์ฌ์ฉํ๋ ํ๊ธฐ๋ฅผ ๋ด์ ๋ณด์์ต๋๋ค. GitHub - boostcampwm2023/web17_morak: Morak | ๋ค์ด๋ฒ ๋ถ์คํธ์บ ํ ๋ด ๋ชจ๊ฐ์ฝ ๋ชจ์ง/๊ด๋ฆฌ ํ๋ซํผ ๐ง๐ป๐ป Morak | ๋ค์ด๋ฒ ๋ถ์คํธ์บ ํ ๋ด ๋ชจ๊ฐ์ฝ ๋ชจ์ง/๊ด๋ฆฌ ํ๋ซํผ ๐ง๐ป๐ป๐ฉ๐ป๐ป๐จ๐ป๐ป. Contribute to boostcampwm2023/web17_morak development by creating an account on GitHub. github.com TMAP Open API๋ ์น ๊ฐ๋ฐ ๋๋ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋ค์ํ๊ฒ ํ์ฉ๋ ์ ์๋๋ก, Javascript ํํ๋ก ์ ๊ณต๋๋ TMAP ์ง๋ ํ๋ซํผ์ ๋๋ค. TMap API๋ ์ด..
-
2023 ํ๊ณETC 2023. 12. 28. 23:23
๐ซ ์ฌํด ์ด๋ฃฌ ๊ฒ์ฌ๋ด Frontend Renaissance์ด์ ์ฌ์งํ๋ ์ง์ฅ์์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ธฐ ์ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค. ํ๋ก ํธ์๋ ๋ฅด๋ค์์ค๋ผ๋ ๋ค์ด๋ฐ์ ์ ๋ง ๋ฉ์ง์ง ์์๊ฐ? ํํ. ๊ฐ์ฅ ์๊ธํ๋ค๊ณ ์๊ฐํ๋ ๋ชจ๋ ธ๋ ํฌ ๊ตฌ์ถ๋ถํฐ, Vite ๋ง์ด๊ทธ๋ ์ด์ , Storybook, ํ ์คํธ ์ฝ๋ ๋์ , ์์ํ๊ฒ๋ Google Spread๋ฅผ ํ์ฉํ ๊ธฐํ์์์ ํ์ ๊ฒฝํ ๊ฐ์ ๊น์ง ๋ค์ํ ์๋์ ๊ฐ์ ์ผ๋ก ๊ฐ๋ฐ์ ๊ฒฝํ์ ๊ฐ์ ํ ์ ์์๋ค. ํค์๋๋ก ํ๋ํ๋ ์จ ๋์ผ๋ ๊ฐ๊ฒฐํ๋ฐ, ๋ชจ๋ ธ๋ ํฌ ๋ง์ด๊ทธ๋ ์ด์ ๋ง ํ๋ ๋ฌ์ ์กฑํ ์ผ๋ ๊ฒ ๊ฐ๋ค. ๋ค์ ์๊ฐํด๋ ๋ฒ ์ผ๋ฆฌ๊ฐ ์๋์๋๋ผ๋ฉด ๋์ง๊ธฐ๊ฒ ์ด ํ๋ก์ ํธ๋ฅผ ๊ณ์ ๊ฐ์ ธ๊ฐ ์ ์์์๊น? ํ๋ ์๊ฐ์ด ๋ ๋ค. ์ฒ์์๋ ๋์ ํด์ผ ํ ๊ฒ, ํ๊ณ ์ถ์ ๊ฒ์ด ๋๋ฌด ๋ง์ ๋ฉ๋ถ์ด ์ฌ ๋ปํ๋..