๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

WEB/REACT23

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.
[โ˜„๏ธํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] 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.
๋ฆฌ์•กํŠธ์—์„œ setState๋ฅผ ํ†ตํ•ด์„œ state๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ์ด์œ  / setState์˜ ๋น„๋™๊ธฐ์„ฑ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ฒ˜์Œ์—๋Š” ์—†๋˜ ์˜๋ฌธ์ด ๊ฐ‘์ž๊ธฐ ์ƒ๊ฒผ์—ˆ๋‹ค. ์™œ ๋ฆฌ์•กํŠธ๋Š” useState๋ผ๋Š” ํ›…์„ ์‚ฌ์šฉํ•ด์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š”๊ฒƒ์ธ๊ฐ€ ๋ฌผ๋ก  ํ›…์„ ์‚ฌ์šฉํ•ด์„œ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์„ ๋ง‰์•„์ฃผ๊ณ , ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์‹œ์ ์— ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์ผ ๊ฑฐ๋‹ค. ํ•˜์ง€๋งŒ, ์™œ!! ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๋“ฏ์ด ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๋Š”๊ฒƒ์ด๋ƒ ์ด๊ฒŒ ๋ฌธ๋“ ๊ถ๊ธˆํ•ด์กŒ๋‹ค ์ด์œ  state๋Š” immutable(๋ถˆ๋ณ€์„ฑ)์„ ์œ ์ง€ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ปดํฌ๋„ŒํŠธ๋Š” ํ˜„์žฌ์˜ this.state์™€ setState๋ฅผ ๋น„๊ตํ•ด์„œ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ render ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ, state๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฆฌ์•กํŠธ๊ฐ€ render ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•„ ์ƒํƒœ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋„ ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์ถ”์ ํ•˜.. 2022. 10. 21.
Redux ๋ฆฌ๋•์Šค๋Š” ์–ด๋ ต๋‹ค... Redux? ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๋ณต์žกํ•ด์ง€๋Š” ์ƒํƒœ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ why? ๊ตฌ์กฐ๊ฐ€ ์ ์  ๋ณต์žกํ•ด์ง€๋ฉด์„œ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋ถ€ํ„ฐ ์ตœํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ๋‚ด๋ ค์˜ค๋ฉด์„œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ! ๋ฆฌ๋•์Šค๋กœ ๋ฐ”๊นฅ์—์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ฉด์„œ ํšจ์œจ์ ์œผ๋กœ ์ ‘๊ทผ! ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์„ ๋ณด์ž! ๐Ÿ‘‡ ์œ„์˜ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๊ฐ€ ์•„๋ž˜์˜ ์ปดํฌ๋„ŒํŠธ๊ตฌ์กฐ์™€ ๊ฐ™์ด ๋ณต์žกํ•ด์กŒ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ์ด๋Ÿด ๊ฒฝ์šฐ, ์ตœํ•˜์œ„ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๊ฑฐ๋‚˜ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ์— ์˜ํ•ด์„œ ๋‹ค๋ฅธ ๋ฃจํŠธ์— ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ณ€ํ™”๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผ์ผœ์•ผํ•˜๋Š” ์ƒํƒœ์ผ ๊ฒฝ์šฐ์ผ ๋•Œ ๋น„ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. How? ์œ„์— ์ œ๊ฐ€ ๋ฌธ์ œ๋กœ ์ œ์‹œํ–ˆ๋˜ ์ƒํ™ฉ๋“ค์„ ๋ฆฌ๋•์Šค๋Š” ๋ฐ”๊นฅ์—์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์คŒ ๋ฆฌ.. 2021. 7. 13.
[React] useEffect useEffect๋ฅผ ์ข€ ๋” ์ง‘์ค‘์ ์œผ๋กœ ๋‹ค๋ค„๋ณผ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค. ์ด๋Š” ๋ผ์ดํ”„์‚ฌ์ดํด๊ณผ ์ง๊ฒฐ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ •ํ™•ํžˆ ์•Œ๊ณ  ์‚ฌ์šฉํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด์„œ ๋‹ค์‹œ ๋ฆฌ๋‹ค๊ธฐ ์ฑ…์„ ์˜ค๋žœ๋งŒ์— ํŽด์„œ ์‚ดํŽด๋ณด์•˜๋‹ค. UseEffect useEffect๋Š” ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋  ๋•Œ๋งˆ๋‹ค ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ›…์ด๋‹ค. componentDidMount + componentDidUpdate componentDidMount + componentDidUpdate + componentWillUnmount ๋งˆ์šดํŠธ ๋  ๋•Œ๋งŒ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ (ComponentDidMount) useEffect(() => { console.log('๋งˆ์šดํŠธ๋ ๋•Œ๋งŒ'); },[]); ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์— ๋งจ ์ฒ˜์Œ ๋ Œ๋”๋ง ๋์„ ๋•Œ๋งŒ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ .. 2021. 7. 6.
๋ฐ˜์‘ํ˜•