[React] useRef์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ
๐Ÿ“” Studying/React 2023. 4. 4. 11:34

๋ฆฌ์•กํŠธ ํ›… ์ค‘์˜ useRef ํ›…์€ DOM์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๊ฑฐ๋‚˜, ๊ฐ’์„ ์ €์žฅํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ›…์ด๋‹ค. (์ด๋•Œ ์ €์žฅํ•œ ๊ฐ’์€ ์ปดํฌ๋„ŒํŠธ์˜ ๋ Œ๋”๋ง๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ์œ ์ง€๋œ๋‹ค!) ์•„์ง๊นŒ์ง€ useRef๋ฅผ input ํƒœ๊ทธ๋ฅผ ํฌ์ปค์‹ฑํ•  ๋•Œ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด์—ˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ์˜ˆ์‹œ๊ฐ€ ๋” ์žˆ๋Š”์ง€ ์ถ”๊ฐ€์ ์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ํฌ์ปค์‹ฑ ํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ฑฐ๋‚˜, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์˜ input ์š”์†Œ ๋“ฑ์— ํฌ์ปค์‹ฑ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. {isLoggedIn && ( {showSearchInput && ( )} setShowSearchInput(true)} /> ... )} ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์™ธ๋ถ€์˜์—ญ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ๋ฅผ ํŒ๋‹จ์—์„œ ๊ฒ€์ƒ‰์ฐฝ์ด ๋‹ซํžˆ๋„๋ก ์‚ฌ์šฉํ•œ ์ ๋„ ์žˆ๋‹ค. // ๊ฒ€์ƒ‰์ฐฝ ์™ธ๋ถ€ ํด๋ฆญ ์—ฌ๋ถ€ ํŒ๋‹จ const clickOutside = (e: an..

[React] React-thunk ์•Œ์•„๋ณด๊ธฐ
๐Ÿ“” Studying/React 2022. 12. 20. 21:27

redux-thunk? ๋ฆฌ๋•์Šค์— ๊ด€ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด '๋ฏธ๋“ค์›จ์–ด'๋ผ๋Š” ๊ฒƒ์„ ํ•œ ๋ฒˆ์ฏค ๋“ค์–ด๋ณด์•˜์„ ๊ฒƒ์ด๋‹ค. redux-thunk, redux-saga, ๊ทธ ์™ธ์—๋„ redux-promise-middleware ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ์˜ค๋Š˜์€ ๊ทธ์ค‘์—์„œ๋„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ธ redux-thunk์— ๋Œ€ํ•˜์—ฌ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค. ๋ฆฌ๋•์Šค ๋ฏธ๋“ค์›จ์–ด? ๋จผ์ € ๋ฏธ๋“ค์›จ์–ด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ๊นŒ ํ•œ๋‹ค. ๋ฆฌ๋•์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋ฆฌ๋•์Šค๊ฐ€ ์ƒˆ๋กœ์šด state๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค. dispatch๋ฅผ ํ†ตํ•ด ๋ฆฌ๋“€์„œ๋กœ ์ „๋‹ฌ๋œ ์•ก์…˜์ด ๋ฆฌ๋“€์„œ๋กœ ์ „๋‹ฌ๋˜์–ด state๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค๋Š” ๊ฒƒ! ๋ฆฌ๋•์Šค ๋ฏธ๋“ค์›จ์–ด๋Š” ์—ฌ๊ธฐ์„œ ์•ก์…˜์ด ๋””์ŠคํŒจ์น˜๋˜๊ณ  ๋ฆฌ๋“€์„œ์— ์ „๋‹ฌ๋˜๊ธฐ ์ „์— ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณดํ†ต ์„œ๋ฒ„์™€ ํ†ต..

[React] Styled-Components ํ™œ์šฉ
๐Ÿ“” Studying/React 2022. 12. 8. 20:50

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..

[React] State์™€ Props
๐Ÿ“” Studying/React 2022. 12. 7. 21:39

๋ฆฌ์•กํŠธ์˜ state์™€ props์— ๋Œ€ํ•ด์„œ ๊ฐ€๋ณ๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค..! ํ˜„์žฌ ๋‚ด์šฉ์€ ์ถ”ํ›„ ๋ง๋ถ™์—ฌ์ง€๊ฑฐ๋‚˜ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ˜‡ ((์ž˜๋ชป๋œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ฒจ์–ธ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค..)) State ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋Š” ๊ฐ’. useState ํ›…์„ ํ†ตํ•ด ๋ฆฌ์•กํŠธ์— state์˜ ๋ณ€ํ™”๋ฅผ ์•Œ๋ ค์„œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žฌํ‰๊ฐ€๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์ดํ›„ JSX๊ฐ€ ๋‹ค์‹œ ํ‰๊ฐ€๋˜๋ฉฐ ๋ณ€ํ™”๋œ ๋ถ€๋ถ„์„ ํ™”๋ฉด์— ๋ Œ๋”๋งํ•œ๋‹ค. const [state, setState] = useState(''); state์— ๋ฐ”๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ˆ ๋ ๊นŒ? useState๊ฐ€ const๋กœ ์ž‘์„ฑ๋œ ์ด์œ ๋Š”?? ๐Ÿค” ์šฐ์„  state๋Š” setState ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. state๋ฅผ ๋ฐ”๋กœ ์“ฐ๋ฉด ์•ˆ ๋˜๋‚˜? ์‹ถ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ state๊ฐ€ ์ง์ ‘ ์ˆ˜์ •๋  ์œ„ํ—˜์„ ๋ฐฉ์ง€..

[React] PropTypes๋กœ props ํƒ€์ž… ๊ฒ€์‚ฌ
๐Ÿ“” Studying/React 2022. 12. 5. 20:49

PropTypes ๋ฆฌ์•กํŠธ์—์„œ๋Š” props๋ฅผ ํ†ตํ•ด์„œ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์šฐ์—ฐ์ฐฎ๊ฒŒ props์— ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์–ด ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค. props์— ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ? ์š”์ƒˆ ํ•ซํ•œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š”๋ฅผ ์“ฐ๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ํƒ€์ž…์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ฒดํฌํ•ด์„œ ์—๋Ÿฌ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•จ๋„ ์žˆ๋‹ค. props์— ํƒ€์ž… ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋„ ์ด์™€ ๊ฒฐ์ด ๊ฐ™๋‹ค๊ณ  ๋ณธ๋‹ค. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž˜๋ชป๋œ ํƒ€์ž…์˜ props๋ฅผ ์ „๋‹ฌ๋ฐ›๊ฑฐ๋‚˜, ํ•„์š”ํ•œ props๊ฐ€ ๋ˆ„๋ฝ๋œ๋‹ค๋ฉด ์˜๋„์น˜ ์•Š์€ ์—๋Ÿฌ๋กœ ์ด์–ด์งˆ ๊ฒƒ!.. PropTypes๋Š” ์ด๋Ÿฐ ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๋ฆฌ์•กํŠธ ๊ณต์‹๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด PropTypes๋Š” React v15.5๋ถ€ํ„ฐ prop-types๋ผ๋Š” ํŒจํ‚ค์ง€๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ๋‹ค!....

[React] ๋ฆฌ๋•์Šค.. ์™œ ์“ฐ์ฃ ? ํ•„์š”์„ฑ๊ณผ ๊ทธ ๊ตฌ์กฐ์— ๋Œ€ํ•ด
๐Ÿ“” Studying/React 2022. 9. 29. 15:14

๋ฆฌ์•กํŠธ๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด ์–ด๋Š ์ˆœ๊ฐ„ ๋ฆฌ๋•์Šค์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•„์•ผ ํ•˜๋Š” ์‹œ๊ธฐ๊ฐ€ ์˜จ๋‹ค. ๋‚˜์—๊ฒŒ๋„ ๋“œ๋””์–ด ๊ทธ ์‹œ๊ธฐ๊ฐ€ ์™”๋‹ค!... ๐Ÿง ๋ฆฌ๋•์Šค์— ๋Œ€ํ•ด ๊นŠ๊ณ  ์ข‹์€ ๊ธ€๋“ค์€ ์ด๋ฏธ ์ถฉ๋ถ„ํžˆ ๋งŽ์œผ๋‹ˆ... ์•„์ง์€ ์ดˆ์‹ฌ์ž์ธ ๋‚˜์˜ ๊ด€์ ์—์„œ ๊ฐœ๋…์„ ๊ฐ€๋ณ๊ฒŒ ์‚ดํŽด๋ณด๊ธฐ๋กœ~ (๊ณ ๋กœ ์ด ๊ธ€์€ ์ดˆ์‹ฌ์ž๋“ค์—๊ฒŒ ์ ํ•ฉ) Redux and Context API ๋ฆฌ๋•์Šค๋Š” ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ ์—…๋ฐ์ดํŠธ ๋กœ์ง์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ํ›จ์”ฌ ํŽธํ•˜๊ฒŒ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋งˆ ๋ฆฌ๋•์Šค๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด๋ผ๋ฉด ์ง€๊ธˆ๊นŒ์ง€ Context API๋ฅผ ์จ์™”์„ ๊ฒƒ์ด๋‹ค. (๋‚˜ ๋˜ํ•œ...) React.createContext ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์ปจํ…์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ œ๊ณต๋˜๋Š” Provider๋ฅผ ํ†ตํ•ด์„œ ๊ฐ’์„ ๊ณต์œ ํ•˜๋Š”..

[React] ๋ฆฌ์•กํŠธ์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด ๐Ÿค”
๐Ÿ“” Studying/React 2022. 9. 28. 20:23

๋ฆฌ์•กํŠธ๋ฅผ ์ข€ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋‹ˆ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ์ •๋ฆฌํ•ด๋ณธ๋‹ค. ์šฐ์„  ์ด ์ƒ๋ช…์ฃผ๊ธฐ๋ผ๋Š”๊ฒŒ, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜์„œ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ์‚ฌ๋ผ์งˆ ๋•Œ๊นŒ์ง€์˜ ์ฃผ๊ธฐ๋ฅผ ๋งํ•œ๋‹ค. ์ด ์ฃผ๊ธฐ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ๋“ค ์„ธ ๊ฐ€์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋“ค์„ useEffect ํ›…๊ณผ ๋น„๊ตํ•ด์„œ ์‚ดํŽด๋ณด๋ ค ํ•œ๋‹ค. componentDidMount() componentDidUpdate() componentWillUnmount() mount ?? ๋จผ์ € ๋งˆ์šดํŠธ(mount)๋ผ๋Š” ์šฉ์–ด๊ฐ€ ๋ฌด์—‡์ธ์ง€๋ฅผ ์•Œ์•„์•ผ๊ฒ ๋‹ค. ๋งˆ์šดํŠธ์™€ ์–ธ๋งˆ์šดํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ, ๋งˆ์šดํŠธ๋Š” ์‚ฌ์ „์ ์ธ ์˜๋ฏธ๋กœ๋Š” '์‹œ์ž‘ํ•˜๋‹ค'๋ผ๋Š” ๋œป์ด์ง€๋งŒ- ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์—์„œ์˜ ๋งˆ์šดํŠธ๋Š” DOM ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์›น๋ธŒ๋ผ์šฐ์ €์— ๋‚˜ํƒ€๋‚  ๋•Œ๋ฅผ ๋งํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์ด๋ ‡๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค. ๋งˆ์šดํŠธ(moun..