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

react21

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.
react-query๋ฅผ ์งง๊ฒŒ ์‚ฌ์šฉํ•ด๋ณธ ํšŒ๊ณ ..๋ž„๊นŒ...? ์ง€๊ธˆ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ react-query์™€ recoil์„ ์‚ฌ์šฉํ•ด์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ๊ณ ์žˆ๋‹ค. ๋ฌผ๋ก  ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„์ง ๋๋‚˜์ง€ ์•Š์•˜๋‹คใ…Žใ…Ž.. ์‚ฌ์‹ค ์ž‘๋…„๊นŒ์ง€๋งŒ ํ•ด๋„ ์ฑ„์šฉ๊ณต๊ณ ๋‚˜ ๊ทธ๋Ÿฐ ๊ณณ๋“ค์— Redux๊ฐ€ ๊ฐ€๋“์ฐผ์—ˆ๋Š”๋ฐ ์–ด๋Š ์ˆœ๊ฐ„๋ถ€ํ„ด๊ฐ€ React-Query์˜ ์ ์œ ์œจ์ด ๋†’์•„์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ณต๋ถ€ํ•ด์•ผ์ง€..ํ•ด์•ผ์ง€..์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์— ์šฐ์—ฐํžˆ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด์„œ ํ•ด์•ผ๋งŒํ•˜๊ฒŒ ๋๋‹ค.. ๋ฆฌ์ฝ”์ผ์€ ์ด์ „์— ํ•™์Šตํ•ด๋ดค๋Š”๋ฐ ๋ฆฌ์•กํŠธ ์ฟผ๋ฆฌ๋Š” ์•ˆํ•ด๋ด์„œ ์‚ด์ง ๊ฒ์ด ๋‚ฌ์—ˆ๋‹ค ๊ทผ๋ฐ ์ง€๊ธˆ ํ•ด๋ณด๋‹ˆ ์ ์šฉํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์— ์žˆ์–ด์„œ๋Š” ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š์œผ๋‹ˆ ๋‚˜์ฒ˜๋Ÿผ ๊ฒ๋จน์€ ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด ์ผ๋‹จ ํ•ด๋ณด๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ๋‹ค. ์ผ๋‹จ ๋„๋Œ€์ฒด ์š”์ฆ˜ ์™œ ๋‹ค ๋ฆฌ์•กํŠธ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด์ง€์— ๋Œ€ํ•œ ์˜๋ฌธ์ด ๋“ค์—ˆ์—ˆ๋‹ค. ์ดํ•ดํ•ด๋ณด๋ ค๊ณ  ์ž๋ฃŒ๋ฅผ ๋งŽ์ด ์ฐพ์•„๋ดค๋Š”๋ฐ ์ž๋ฃŒ๋„ ์ž๋ฃŒ์ง€๋งŒ ์ง์ ‘.. 2023. 4. 4.
Redux ๋ฆฌ๋•์Šค๋Š” ์–ด๋ ต๋‹ค... Redux? ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๋ณต์žกํ•ด์ง€๋Š” ์ƒํƒœ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ why? ๊ตฌ์กฐ๊ฐ€ ์ ์  ๋ณต์žกํ•ด์ง€๋ฉด์„œ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋ถ€ํ„ฐ ์ตœํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ๋‚ด๋ ค์˜ค๋ฉด์„œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ! ๋ฆฌ๋•์Šค๋กœ ๋ฐ”๊นฅ์—์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ฉด์„œ ํšจ์œจ์ ์œผ๋กœ ์ ‘๊ทผ! ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์„ ๋ณด์ž! ๐Ÿ‘‡ ์œ„์˜ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๊ฐ€ ์•„๋ž˜์˜ ์ปดํฌ๋„ŒํŠธ๊ตฌ์กฐ์™€ ๊ฐ™์ด ๋ณต์žกํ•ด์กŒ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ์ด๋Ÿด ๊ฒฝ์šฐ, ์ตœํ•˜์œ„ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๊ฑฐ๋‚˜ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ์— ์˜ํ•ด์„œ ๋‹ค๋ฅธ ๋ฃจํŠธ์— ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ณ€ํ™”๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผ์ผœ์•ผํ•˜๋Š” ์ƒํƒœ์ผ ๊ฒฝ์šฐ์ผ ๋•Œ ๋น„ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. How? ์œ„์— ์ œ๊ฐ€ ๋ฌธ์ œ๋กœ ์ œ์‹œํ–ˆ๋˜ ์ƒํ™ฉ๋“ค์„ ๋ฆฌ๋•์Šค๋Š” ๋ฐ”๊นฅ์—์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์คŒ ๋ฆฌ.. 2021. 7. 13.
[React] LifeCycle (๋ผ์ดํ”„์‚ฌ์ดํด, ์ƒ๋ช…์ฃผ๊ธฐ) ์›น์„ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋ฉด ๋น ์งˆ ์ˆ˜ ์—†๋Š”๊ฒŒ ๋˜ ๋ฐ”๋กœ ๋ผ์ดํ”„์‚ฌ์ดํด์ด๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋‚˜๋Š” ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ฐœ๋…๋งŒ ๊ณต๋ถ€๋ฅผ ํ•ด์„œ ์ •ํ™•ํ•˜๊ฒŒ ์–ด๋””์— ์“ฐ์ด๊ณ  ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋ฉด์„œ๋„ ์ด๊ฒŒ ๋ผ์ดํ”„์‚ฌ์ดํด์ด ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€์กฐ์ฐจ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ์ง€ ๋ชปํ•˜๊ณ  ๋„˜์–ด๊ฐ”์—ˆ๋Š”๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด ์ •ํ™•ํžˆ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ ค๊ณ  ํ•œ๋‹ค. ์ผ๋‹จ, ๊ตฌ๊ธ€์— react lifecycle์ด๋ผ๊ณ  ์น˜๋ฉด ํ•ญ์ƒ ๋‚˜์˜ค๋Š” ๊ทธ๋ฆผ์ด ์žˆ๋‹ค. mount๋ถ€ํ„ฐ unmount๊นŒ์ง€ ์ขŒ๋ฅด๋ฅต ์žˆ๋Š” ์‚ฌ์ง„์ด๋‹ค. ๋‚˜๋Š” ๊ทธ๋ƒฅ ์ด๊ฒƒ๋งŒ ๊ณต๋ถ€ํ•˜๊ณ  ์•Œ๊ณ ์žˆ์—ˆ๋‹ค. ๊ทผ๋ฐ ์™œ ๋ผ์ดํ”„์‚ฌ์ดํด์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผํ•˜๋Š”์ง€ ๊ทผ๋ณธ์ ์ธ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋ถ€์กฑํ•˜๋‹ค๊ณ  ๋Š๊ปด์„œ ์ด๋ฒˆ์—” ๊ทธ ๋ถ€๋ถ„์„ ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค! ๋ผ์ดํ”„์‚ฌ์ดํด์ด๋ž€? ๋ผ์ดํ”„ ์‚ฌ์ดํด์€ ๊ฐ„๋‹จํžˆ ์›Œ๋”ฉ๋งŒ ๋ณด๋”๋ผ๋„ 'ํ•œ ํ™”๋ฉด์ด ์ƒ์„ฑ๋˜๊ณ  ์‚ฌ๋ผ์ง€๊ธฐ๊นŒ์ง€์˜ ๊ณผ์ •'์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์™œ ๋ผ์ด.. 2021. 7. 5.
[React] Rerendering(๋ฆฌ๋ Œ๋”๋ง) ๋ฆฌ์•กํŠธ๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋ฉด, ํšจ์œจ์„ฑ์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋นผ๋†“์„ ์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ €๋ฒˆ์— ์ •๋ฆฌํ–ˆ๋˜ DOM์—์„œ์˜ ๊ฐ€์ƒ ๋”๋„ ๊ทธ๋ ‡๊ณ , ์–ด๋–ค ํ•œ ๊ฐœ๋…์„ ๊ณต๋ถ€ํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ ๊ฐœ๋…์ด ํšจ์œจ์ ์ด๊ฒŒ ๋„์™€์ค€๋‹ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด ๋งŽ๋‹ค๋Š”๊ฒƒ์ด๋‹ค. ๋‚˜๋Š” ์ „์— ์ด๋Ÿฐ ์งˆ๋ฌธ์„ ๋ฐ›์€ ์ ์ด ์žˆ๋‹ค. '๋ฆฌ๋ Œ๋”๋ง์ด ๋ญ”์ง€ ์•„์‹œ๋‚˜์š”?' ์ด ๊ธ€์„ ๋ณด๋Š” ์—ฌ๋Ÿฌ๋ถ„๋“ค์€ ๋ฌด์Šจ ๋Œ€๋‹ต์„ ํ•˜๊ฒ ๋Š”๊ฐ€? ๋‚˜๋Š” ๊ทธ๋•Œ๋Š” ๋ถ€๋„๋Ÿฝ์ง€๋งŒ ๋ฆฌ๋ Œ๋”๋ง์ด ๊ทธ๋ƒฅ ๋ Œ๋”๋ง์„ ๋‹ค์‹œํ•œ๋‹ค๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€? ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ์—ˆ๋‹ค. ์‚ฌ์‹ค ๋ง ๋œป์€ ๊ทธ๋ ‡๋‹ค. ํ•˜์ง€๋งŒ, ์งˆ๋ฌธ์˜ ์˜๋„๊ฐ€ ๊ณผ์—ฐ ์ง„์งœ ๋œป์„ ๋ฌผ์–ด๋ณด๋Š” ๊ฒƒ์ด์—ˆ์„๊นŒ? ์ด๋•Œ ๋ชจ๋“  ์งˆ๋ฌธ์— ๋‹ต์„ ๊ฐœ๋–ก๊ฐ™์ด ํ•œ ๋‚˜๋Š” ์ง‘์— ์™€์„œ ์ฐจ๋ถ„ํžˆ ๋‹ค ์ ์–ด๋†จ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ฑ„์›Œ๋‚˜๊ฐ€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๋ฆฌ๋ Œ๋”๋ง์€ ๋ฌด์—‡์ธ์ง€ ๊ทผ๋ณธ๋ถ€ํ„ฐ ์•Œ์•„์•ผํ•˜๋ฉฐ, ์™œ ์ด๊ฑธ ์•Œ์•„์•ผํ•˜๋Š”์ง€, ์–ด๋””์—์„œ ์ด ๊ฐœ๋…์ด ์“ฐ์ด๋Š”.. 2021. 6. 24.
ํŒŒ์ด์–ด๋ฒ ์ด์Šค(Firebase) - NoSQL,Collection,Document ์ด๋ฒˆ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ •๋ฆฌํ•˜๋ฉด์„œ ํŒŒ์ด์–ด๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ์‚ฌ์šฉํ•ด๋ดค์ง€๋งŒ ์ •ํ™•ํžˆ ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ๋„˜์–ด๊ฐ€์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ๋‹ค์‹œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ดค๋‹ค. ํŒŒ์ด์–ด๋ฒ ์ด์Šค์—์„œ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ–ˆ๋˜ ๊ธฐ๋Šฅ์€ Firebase Database(DB)์™€ Firebase Authentication(Auth)์ด๋‹ค. Firebase Auth๋Š” ์ด๋ฉ”์ผ, ๊ตฌ๊ธ€ ๋“ฑ ๋‹ค์–‘ํ•œ sns๋ฅผ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ์ธ์ฆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ์ž์‹ ์ด ๊ตฌํ˜„ํ•˜๋ ค๊ณ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์— ๋”ฐ๋ผ ํ—ˆ์šฉํ•ด์ฃผ์–ด ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์ด ์ ์€ ๊ทธ๋‹ค์ง€ ์–ด๋ ต์ง€ ์•Š์•˜๋‹ค. ํ•˜์ง€๋งŒ, Firebase DB์— ์ ‘๊ทผํ•ด์„œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊บผ๋‚ด์„œ ์“ฐ๋Š” ๋ถ€๋ถ„์— ์žˆ์–ด ์ฒ˜์Œ์— ์–ด๋ ค์›€์„ ๋Š๊ผˆ์—ˆ๋‹ค. ๋‚˜์—๊ฒ Collection๊ณผ Document์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ๋’ค์ฃฝ๋ฐ•์ฃฝ ๋‹ค๊ฐ€์™€์„œ ์–ด๋ ค์› ์—ˆ๋Š”๋ฐ .. 2021. 6. 24.
๋ฐ˜์‘ํ˜•