๋ฆฌ์กํธ ํ ์ค์ useRef ํ ์ DOM์ ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๊ฑฐ๋, ๊ฐ์ ์ ์ฅํด์ ์ฌ์ฉํ ์ ์๋ ํ ์ด๋ค. (์ด๋ ์ ์ฅํ ๊ฐ์ ์ปดํฌ๋ํธ์ ๋ ๋๋ง๊ณผ ๋ฌด๊ดํ๊ฒ ์ ์ง๋๋ค!) ์์ง๊น์ง useRef๋ฅผ input ํ๊ทธ๋ฅผ ํฌ์ปค์ฑํ ๋ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด์๋๋ฐ, ๋ค๋ฅธ ์์๊ฐ ๋ ์๋์ง ์ถ๊ฐ์ ์ผ๋ก ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ํฌ์ปค์ฑ ํ๊ธฐ ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋, ์ด๋ฒคํธ ํธ๋ค๋ฌ์ input ์์ ๋ฑ์ ํฌ์ปค์ฑ์ ํ ์ ์๋ค. {isLoggedIn && ( {showSearchInput && ( )} setShowSearchInput(true)} /> ... )} ํ๋ก์ ํธ์์๋ ์ธ๋ถ์์ญ์ ํด๋ฆญํ์ ๋๋ฅผ ํ๋จ์์ ๊ฒ์์ฐฝ์ด ๋ซํ๋๋ก ์ฌ์ฉํ ์ ๋ ์๋ค. // ๊ฒ์์ฐฝ ์ธ๋ถ ํด๋ฆญ ์ฌ๋ถ ํ๋จ const clickOutside = (e: an..
redux-thunk? ๋ฆฌ๋์ค์ ๊ดํด์ ๊ณต๋ถํ๋ค ๋ณด๋ฉด '๋ฏธ๋ค์จ์ด'๋ผ๋ ๊ฒ์ ํ ๋ฒ์ฏค ๋ค์ด๋ณด์์ ๊ฒ์ด๋ค. redux-thunk, redux-saga, ๊ทธ ์ธ์๋ redux-promise-middleware ๋ฑ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋๋ฐ ์ค๋์ ๊ทธ์ค์์๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ธ redux-thunk์ ๋ํ์ฌ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. ๋ฆฌ๋์ค ๋ฏธ๋ค์จ์ด? ๋จผ์ ๋ฏธ๋ค์จ์ด์ ๋ํด์ ์์๋ณผ๊น ํ๋ค. ๋ฆฌ๋์ค๋ฅผ ์ฌ์ฉํด๋ณด์๋ค๋ฉด ์์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋ฆฌ๋์ค๊ฐ ์๋ก์ด state๋ฅผ ๋ฐํํ๋ค๋ ๊ฒ์ ์๊ณ ์์ ๊ฒ์ด๋ค. dispatch๋ฅผ ํตํด ๋ฆฌ๋์๋ก ์ ๋ฌ๋ ์ก์ ์ด ๋ฆฌ๋์๋ก ์ ๋ฌ๋์ด state๊ฐ ๋ณ๊ฒฝ๋๋ค๋ ๊ฒ! ๋ฆฌ๋์ค ๋ฏธ๋ค์จ์ด๋ ์ฌ๊ธฐ์ ์ก์ ์ด ๋์คํจ์น๋๊ณ ๋ฆฌ๋์์ ์ ๋ฌ๋๊ธฐ ์ ์ ์ถ๊ฐ์ ์ธ ์์ ์ ์งํํ ์ ์๋ค. ๋ณดํต ์๋ฒ์ ํต..
React์์์ CSS ๋ฆฌ์กํธ์์ CSS๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค. CSS ํ์ผ์ import ํ๊ฑฐ๋ module๋ก ์ฌ์ฉํ ์๋ ์๊ณ , SASS ๊ฐ์ ์ ์ฒ๋ฆฌ๊ธฐ๋ tailwind ๋ฑ์ ํ๋ ์์ํฌ๋ฅผ ์ด์ฉํ ์๋ ์๋ค. ๊ทธ์ค์์ ์ค๋์ Styled-components์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. Styled-components์ ๋ํด์ ๋ชฐ๋๋ ๋ถ๋ถ์ด ๋ง์๊ณ , ๋ฌด์๋ณด๋ค ์ฌ์ฉํด๋ณด๋ ์๊ฐ๋ณด๋ค ๋ ํธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๋ ๊ฒ์ ์๊ฒ ๋์๊ธฐ ๋๋ฌธ์ด๋ค! Styled-components Styled-components๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ CSS๋ฅผ ์์ฑํ๋ CSS-in-JS ๋ฐฉ์์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ CSS ์ฝ๋๋ฅผ ๋ง๋ค์ด๋ด์ ์ปดํฌ๋ํธ๋ฅผ ๊พธ๋ฐ ์ ์๋ค. ์ด๋ฐ CSS-in-JS ๋ฐฉ์์ ํจํค์ง๊ฐ Styled-compo..
๋ฆฌ์กํธ์ state์ props์ ๋ํด์ ๊ฐ๋ณ๊ฒ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค..! ํ์ฌ ๋ด์ฉ์ ์ถํ ๋ง๋ถ์ฌ์ง๊ฑฐ๋ ์์ ๋ ์ ์๋ค. ๐ ((์๋ชป๋ ๋ถ๋ถ์ ๋ํ ์ฒจ์ธ์ ์ธ์ ๋ ํ์์ ๋๋ค..)) State ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๋ฐ๋ ์ ์๋ ๊ฐ. useState ํ ์ ํตํด ๋ฆฌ์กํธ์ state์ ๋ณํ๋ฅผ ์๋ ค์ ์ปดํฌ๋ํธ๊ฐ ์ฌํ๊ฐ๋ ์ ์๋๋ก ํ๋ค. ์ดํ JSX๊ฐ ๋ค์ ํ๊ฐ๋๋ฉฐ ๋ณํ๋ ๋ถ๋ถ์ ํ๋ฉด์ ๋ ๋๋งํ๋ค. const [state, setState] = useState(''); state์ ๋ฐ๋ก ๋ณ๊ฒฝํ๋ฉด ์ ๋ ๊น? useState๊ฐ const๋ก ์์ฑ๋ ์ด์ ๋?? ๐ค ์ฐ์ state๋ setState ํจ์๋ฅผ ํตํด์๋ง ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค. state๋ฅผ ๋ฐ๋ก ์ฐ๋ฉด ์ ๋๋? ์ถ์ ์ ์๋๋ฐ, ์ด๋ ๊ฒ state๊ฐ ์ง์ ์์ ๋ ์ํ์ ๋ฐฉ์ง..
PropTypes ๋ฆฌ์กํธ์์๋ props๋ฅผ ํตํด์ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๊ณ , ์ด๋ฅผ ํตํด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ์ ์๋ค. ์ฐ์ฐ์ฐฎ๊ฒ props์ ํ์ ๊ฒ์ฌ๋ฅผ ํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์ด ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. props์ ํ์ ๊ฒ์ฌ๋ฅผ? ์์ ํซํ ํ์ ์คํฌ๋ฆฝํธ๋๋ฅผ ์ฐ๋ ์ด์ ์ค ํ๋๋ ํ์ ์ ์๊ฒฉํ๊ฒ ์ฒดํฌํด์ ์๋ฌ๋ฅผ ์ค์ด๊ธฐ ์ํจ๋ ์๋ค. props์ ํ์ ๊ฒ์ฌ๊ฐ ํ์ํ ์ด์ ๋ ์ด์ ๊ฒฐ์ด ๊ฐ๋ค๊ณ ๋ณธ๋ค. ์ปดํฌ๋ํธ๊ฐ ์๋ชป๋ ํ์ ์ props๋ฅผ ์ ๋ฌ๋ฐ๊ฑฐ๋, ํ์ํ props๊ฐ ๋๋ฝ๋๋ค๋ฉด ์๋์น ์์ ์๋ฌ๋ก ์ด์ด์ง ๊ฒ!.. PropTypes๋ ์ด๋ฐ ์๋ฌ๋ฅผ ๋ฐฉ์งํด์ค ์ ์๋ค. ์ฐธ๊ณ ๋ก ๋ฆฌ์กํธ ๊ณต์๋ฌธ์์ ๋ฐ๋ฅด๋ฉด PropTypes๋ React v15.5๋ถํฐ prop-types๋ผ๋ ํจํค์ง๋ก ๋ถ๋ฆฌ๋์๋ค!....
๋ฆฌ์กํธ๋ฅผ ๊ณต๋ถํ๋ค ๋ณด๋ฉด ์ด๋ ์๊ฐ ๋ฆฌ๋์ค์ ๋ํด์ ์์๋ณด์์ผ ํ๋ ์๊ธฐ๊ฐ ์จ๋ค. ๋์๊ฒ๋ ๋๋์ด ๊ทธ ์๊ธฐ๊ฐ ์๋ค!... ๐ง ๋ฆฌ๋์ค์ ๋ํด ๊น๊ณ ์ข์ ๊ธ๋ค์ ์ด๋ฏธ ์ถฉ๋ถํ ๋ง์ผ๋... ์์ง์ ์ด์ฌ์์ธ ๋์ ๊ด์ ์์ ๊ฐ๋ ์ ๊ฐ๋ณ๊ฒ ์ดํด๋ณด๊ธฐ๋ก~ (๊ณ ๋ก ์ด ๊ธ์ ์ด์ฌ์๋ค์๊ฒ ์ ํฉ) Redux and Context API ๋ฆฌ๋์ค๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ์ปดํฌ๋ํธ์ ์ํ ์ ๋ฐ์ดํธ ๋ก์ง์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ณ , ์ํ๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ๋ ํจ์ฌ ํธํ๊ฒ ์ ๋ฌํ ์ ์๋ค. ์๋ง ๋ฆฌ๋์ค๋ฅผ ์ฒ์ ์ ํ๋ ์ฌ๋๋ค์ด๋ผ๋ฉด ์ง๊ธ๊น์ง Context API๋ฅผ ์จ์์ ๊ฒ์ด๋ค. (๋ ๋ํ...) React.createContext ๋ฉ์๋๋ฅผ ํตํด์ ์ปจํ ์คํธ๋ฅผ ๋ง๋ค์ด์ ์ ๊ณต๋๋ Provider๋ฅผ ํตํด์ ๊ฐ์ ๊ณต์ ํ๋..
๋ฆฌ์กํธ๋ฅผ ์ข ๊ณต๋ถํ๋ค ๋ณด๋ ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ์ ๋ํด์๋ ์์๋ด์ผ ํ ๊ฒ ๊ฐ์์ ์ ๋ฆฌํด๋ณธ๋ค. ์ฐ์ ์ด ์๋ช ์ฃผ๊ธฐ๋ผ๋๊ฒ, ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๋ํ๋์ ์ ๋ฐ์ดํธ๋๊ณ ์ฌ๋ผ์ง ๋๊น์ง์ ์ฃผ๊ธฐ๋ฅผ ๋งํ๋ค. ์ด ์ฃผ๊ธฐ์ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ค ์ธ ๊ฐ์ง๋ ๋ค์๊ณผ ๊ฐ๋ค. ์ด ๋ฉ์๋๋ค์ useEffect ํ ๊ณผ ๋น๊ตํด์ ์ดํด๋ณด๋ ค ํ๋ค. componentDidMount() componentDidUpdate() componentWillUnmount() mount ?? ๋จผ์ ๋ง์ดํธ(mount)๋ผ๋ ์ฉ์ด๊ฐ ๋ฌด์์ธ์ง๋ฅผ ์์์ผ๊ฒ ๋ค. ๋ง์ดํธ์ ์ธ๋ง์ดํธ๊ฐ ์๋๋ฐ, ๋ง์ดํธ๋ ์ฌ์ ์ ์ธ ์๋ฏธ๋ก๋ '์์ํ๋ค'๋ผ๋ ๋ป์ด์ง๋ง- ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์์ ๋ง์ดํธ๋ DOM ํธ๋ฆฌ๊ฐ ์์ฑ๋๊ณ ์น๋ธ๋ผ์ฐ์ ์ ๋ํ๋ ๋๋ฅผ ๋งํ๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ๋งํ ์ ์๊ฒ ๋ค. ๋ง์ดํธ(moun..
Comment