WEB32 Ref๋ฅผ ์ข ๋ ์ ์จ๋ณผ๊น? (forwardRef์ useImperativeHandle) ๋ค์ด๊ฐ๋ฉฐ: React์ Ref ์ ๋ฌ ๋ฌธ์ React์ ์ปดํฌ๋ํธ์์ ref๋ฅผ ์ ๋ฌํ๋ ค๊ณ ํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.// ๐จ ๋์ํ์ง ์๋ ์ฝ๋const Input = (props) => { return ;};// ๋ถ๋ชจ ์ปดํฌ๋ํธconst Parent = () => { const inputRef = useRef(null); return ; // ref๊ฐ ์ ๋ฌ๋์ง ์์};์ด๋ React๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ref๋ฅผ ์ผ๋ฐ prop์ผ๋ก ์ ๋ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฐ ์ ํ์ด ์๋ ์ด์ ๋:1. ์บก์ํ ์ ์ง: ๋ด๋ถ ๊ตฌํ ์ธ๋ถ์ฌํญ์ ๋ณดํธ2. ์์ธก ๊ฐ๋ฅํ ๋ฐ์ดํฐ ํ๋ฆ ๋ณด์ฅ3. ๋ถํ์ํ ๋ ธ์ถ ๋ฐฉ์ง forwardRef: React์ ๊ณต์์ ์ธ ref ์ ๋ฌ ๋ฉ์ปค๋์ฆReact ๊ณต์ ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด, `forwardRef`๋ ๋ค์๊ณผ ๊ฐ์ .. 2024. 6. 28. ๋ setTimeout, setInterval ๋ก ์๊ฐ ๋ณด์ฅํ๋ค๊ณ ํ ์ ์์ด? ์ด๋ป๊ฒ? ํ์ด๋จธ๋ฅผ ๊ตฌํํ๋ค๊ฐ ๋ฌธ๋ ๊ทธ๋ฐ ์๊ฐ์ด ๋ค์๋ค. ์๋ฌด ์๊ฐ ์์ด setTimeout ๊ณผ setInterval์ ์ฌ์ฉํ๋ฉด์ ์๋ค๋ ์ด๋ป๊ฒ ๋์๊ฐ๋๊ฑฐ์ง? ์๋ค๋ฅผ ๋ฏฟ๊ณ ์จ๋๋๋๊ฑด๊ฐ? ๊ณผ์ฐ setTimeout๊ณผ setInterval์ด ์๊ฐ์ ๋ณด์ฅํด์ฃผ๋ ๊ฒ ๋ง๋? ๊ทธ๋์ ๊ณต๋ถํ๊ฒ ๋๋ค. ๐TL; DR setTimeout, setInterval์ ์ฐจ์ด์ ์ง์ฐ ๊ฐ๊ฒฉ์ด ๋ณด์ฅ๋๋? ์๊ฐ์ ์ธก์ ํด์ผ๋๋ ํ์ด๋จธ๋ผ๋ฉด Date๊ฐ ํด๊ฒฐ์ฑ ์ด ๋ ์๋..? setTimeout ์ง์ ํด์ค ์๊ฐ์ด ์ง๋ ํ์ 1ํ ํน์ ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ ๋น๋๊ธฐ ํจ์ setTimeout์ด ๋น๋๊ธฐ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ์ด์ ๋ JS์์ง์ด ์๋๋ผ WebAPI์์ ์ฒ๋ฆฌ๋ฅผ ํ๋ค. ์ด๋ฅผ ํตํด์ ์ฑ๊ธ์ค๋ ๋์ธ JS์์ ๋น๋๊ธฐ์ ์ธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋๋ค. setInterval ์ง์ ํด.. 2024. 1. 16. styled-components๋ฌด์์ tailwind CSS ๋์ ๊ธฐ - 1 ๐TL; DR ์๋๋ styled-components๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ๋์์ธ์์คํ ๊ตฌ์ถ์ ํ๋ฉฐ styled-components์ ํ๊ณ๋ฅผ ๋๊ผ๋ค. tailwind CSS๋ฅผ ๋์ ํ๋ค. ์์ง์ ํผ๋์ค๋ฝ๋ค.. tailwind CSS๋ฅผ '์ ์ฐ๋' ๋ฐฉ๋ฒ์ ๋ชจ์์ค์ด๋ค styled-components๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์คํ์ผ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ '์ปดํฌ๋ํธํ'์ ์์๋ค. ์ปดํฌ๋ํธํํ๋ ๊ฑธ ์ข์ํ๊ธฐ๋ ํ๊ณ , ์ปดํฌ๋ํธ ์ด๋ฆ์ ๋ช ์ํ๋ฉด์ ๋ช ํํ ํด๋น ํ๊ทธ์ ์ญํ ์ด ๋๋ฌ๋๋ค๋ ์ ๋ ์ข์๋ค. ์ด ์ ์ ๋ฒ๊ทธ ํฝ์ฑ์๋ ๊ต์ฅํ ๊ฐํธํจ์ ๋๋ผ๊ฒ ํด์คฌ๋ค. (๋ฌธ์ ์ ์์ธ์ ์ฐพ๋ ๋ถ๋ถ์์ ๋ช ์์ฑ์ ์ฅ์ ) ๊ทธ๋ฆฌ๊ณ props๋ก ์กฐ๊ฑด๋ถ ์คํ์ผ๋ง์ ์ฅ์ ๋ ๋งค์ฐ ์ข์๋ค. ๋ฐ๋ณต๋๋ ์ปดํฌ๋ํธ์์ ์๊น๋ง ๋ฐ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ง์ด ๋ดค๊ณ , ๋ฐ๋ณต๋๋ ์ฝ๋.. 2024. 1. 8. ๊ณผ์ฐ ๋๊ตฌ๋ฅผ ์ํ ์น ์ ๊ทผ์ฑ์ธ๊ฐ 11์ 7์ผ์ ์น ์ ๊ทผ์ฑ์ ๋ํ ๊ฐ์ฐ์ ๋ฃ๊ณ ์๋ค. ์ง์ง ๋ง์ ๊ฑธ ์ป์๋ ๊ฐ์์๋ค. ์๋ํ๋ฉด ๋๋ ์ ์ด์ ์๋ชป ์๊ณ ์์๋ ๊ฐ๋ ์ด์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฐฝํผํ์ง๋ง, ์ ๋ณด ์ ๊ทผ์ฑ์ด๋ผ๋ ๋ง์ ๋ณด์ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๋ค๋ฃฌ๋ค๊ณ ์๊ฐํ๋ ๋๋ ๋จธ๋ฆฌ๋ฅผ ๋~~ ๋ง์๋ค. ์ด๋ฒ ๊ธฐํ์ ์๋ชป๋ ์ง์์ ๋ฐ๋ก ์ก์ ์ ์์ด์ ๋๋ฌด ์ข์๋ค. ์๋ ๋ด์ฉ์ ๊ฐ์ฐ์ ๋ค์ผ๋ฉด์ ์ ๋ฆฌํ ๋ด์ฉ์ด๋ค. ๋์ฒ๋ผ '์น ์ ๊ทผ์ฑ'์ ๋ํด์ ์ ๋ชจ๋ฅธ๋ค๊ฑฐ๋, ๋ค์ด๋ง ๋ณธ ์ฌ๋์ด ์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. ๋ง์ฝ, ์ ๊ทผ์ฑ์ ๋ํด์ ์กฐ๊ธ ์๊ณ ์๋ค๋ฉด ์๋ ์ง๋ฌธ์ ํ ๋ฒ ๋ตํด๋ณด๋ ๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค. ์๋น์ค๋ฅผ ๋ง๋ค๋ ์ ๊ทผ์ฑ์ ์ด๋์ ๋ ๊ฐ์น๋ฅผ ๋๋๊ฐ? ์ ๊ทผ์ฑ์ ์ค์์ฑ๊ณผ ํ์์ฑ์ ์๋์ง ์๋น์ค ๊ฐ๋ฐ ํ๋ก์ธ์ค์์ ๊ณ ๋ คํ๊ณ ์๋์ง ๋ด๊ฐ ๋ง๋ ์๋น์ค๋ฅผ ์ฅ์ ์ธ์ด ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ์๋, ์ด.. 2023. 11. 22. [โ๏ธํธ๋ฌ๋ธ์ํ ] useEffect ๋ด setState ๋ฌดํ๋ฃจํ ์๋ ๋ฌธ์ ๊ฐ ์๋ ์ฝ๋์ ์ด๋ฒ์ border๋ฅผ linear๋ก ๋ฐ๊พธ๋ฉด์ setํจ์๋ฅผ ๋ฐฐ์ด๋ก ๋๊ฐ ๋ฃ์ด์ฃผ๋ค๋ณด๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. # ์๋ ์ฝ๋ useEffect(() => { if (isPost.data?.isAllSeen == false) { for (let i = 0; i < isPost.data?.seenPostList.length; i++) { if (isPost.data?.seenPostList[i].isSeen == false) { if (isPost.data?.seenPostList[i].isPublic == true) { setBorderColor(['#6935FD', '#9747FF']); setIndex(i); break; } if (isPost.data?.seenPostList[i].is.. 2023. 10. 5. react-query๋ฅผ ์งง๊ฒ ์ฌ์ฉํด๋ณธ ํ๊ณ ..๋๊น...? ์ง๊ธ ์งํํ๊ณ ์๋ ํ๋ก์ ํธ์์ react-query์ recoil์ ์ฌ์ฉํด์ ์ํ๊ด๋ฆฌ๋ฅผ ํด์ฃผ๊ณ ์๋ค. ๋ฌผ๋ก ํ๋ก์ ํธ๊ฐ ์์ง ๋๋์ง ์์๋คใ ใ .. ์ฌ์ค ์๋ ๊น์ง๋ง ํด๋ ์ฑ์ฉ๊ณต๊ณ ๋ ๊ทธ๋ฐ ๊ณณ๋ค์ Redux๊ฐ ๊ฐ๋์ฐผ์๋๋ฐ ์ด๋ ์๊ฐ๋ถํด๊ฐ React-Query์ ์ ์ ์จ์ด ๋์์ง๊ธฐ ์์ํ๋ค. ๊ณต๋ถํด์ผ์ง..ํด์ผ์ง..์๊ฐํ๋ค๊ฐ ์ฌ์ฉํ๊ณ ์๋ ํ๋ก์ ํธ์ ์ฐ์ฐํ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด์ ํด์ผ๋งํ๊ฒ ๋๋ค.. ๋ฆฌ์ฝ์ผ์ ์ด์ ์ ํ์ตํด๋ดค๋๋ฐ ๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ ์ํด๋ด์ ์ด์ง ๊ฒ์ด ๋ฌ์๋ค ๊ทผ๋ฐ ์ง๊ธ ํด๋ณด๋ ์ ์ฉํ๊ณ ์ฌ์ฉํ๋ ๋ฐ์ ์์ด์๋ ํฌ๊ฒ ์ด๋ ต์ง ์์ผ๋ ๋์ฒ๋ผ ๊ฒ๋จน์ ์ฌ๋์ด ์๋ค๋ฉด ์ผ๋จ ํด๋ณด๋ผ๊ณ ๋งํ๊ณ ์ถ๋ค. ์ผ๋จ ๋๋์ฒด ์์ฆ ์ ๋ค ๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฑด์ง์ ๋ํ ์๋ฌธ์ด ๋ค์์๋ค. ์ดํดํด๋ณด๋ ค๊ณ ์๋ฃ๋ฅผ ๋ง์ด ์ฐพ์๋ดค๋๋ฐ ์๋ฃ๋ ์๋ฃ์ง๋ง ์ง์ .. 2023. 4. 4. ์ด์ 1 2 3 4 ยทยทยท 6 ๋ค์ ๋ฐ์ํ