Ref
1. ref?
reference์ ์ฝ์๋ก, ๋ฆฌ์กํธ์ element๊ฐ ์ฐธ์กฐํ๋ ๋ณ์์ ์ ๊ทผํ์ฌ ์ ์ด๊ฐ ๊ฐ๋ฅํ๋ค.
์์ ์ฝ๋์ฒ๋ผ, ์ผ๋ฐ์ ์ธ html์์๋ element์๋ id๋ผ๋ ์์ฑ๊ฐ์ ๋ถ์ฌ DOM์ ์ด๋ฆ์ ๋ถ์ด๋ฉฐ, ์ด ๊ฐ์ **
์ค๋ณต๋์๋ ์๋๋ ์ ์ผํ ๊ฐ
**์ด๋ค.์ด์ ๊ฐ์ด, ๋ฆฌ์กํธ ํ๋ก์ ํธ ๋ด๋ถ์์ DOM์ ์ด๋ฆ์ ๋ถ์ด๋ ์ญํ ์ ํ๋ ๊ฒ์ด ref์ด๋ค.
๋ฆฌ์กํธ์์ ref๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?
๋ง์ฝ, ์์ ์ฝ๋์ฒ๋ผ DOM์ ์ด๋ฆ์ ๋ถ์ฌ ์ฌ์ฉํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉ์, ๋์ผํ id๋ฅผ ๊ฐ์ง DOM ์์๊ฐ ์ฌ๋ฌ๊ฐ๊ฐ ๋๋ค.
ํ์ง๋ง, ref๋ ์ ์ญ์ผ๋ก ์ ํจํ ๊ฒ์ด ์๋,
์ฌ์ฉ๋ ์ปดํฌ๋ํธ ๋ด์์ ์ง์ญ์ ์ผ๋ก ์ ํจํ๊ธฐ ๋๋ฌธ์
๋ฌธ์ ๊ฐ ์๋ค.
๋ํ ref๋ state์ ๊ฐ์ด ์ด๋ ํ ๊ฐ์ ์ ์ฅํ๋ ๊ณต๊ฐ์ด ๋๊ธฐ๋ ํ๋ค.
ํ์ง๋ง, ref๋ state์ ๋ฌ๋ฆฌ, ๊ฐ์ด ๋ณํ ๋ ๋ฆฌ๋ ๋๋ง์ด ๋์ง ์๊ธฐ ๋๋ฌธ์, ์ ์ฒด ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋ง ์ํค์ง ์๊ณ , ๋ด๊ฐ ์ํ๋ ๊ฐ๋ง ๋ณ๊ฒฝํ๊ณ ์ถ์๋ ์ฌ์ฉํ๋ค.
2. useRef
๋ฆฌ์กํธ์ ํจ์ํ ์ปดํฌ๋ํธ์์ ref๋ฅผ ์ฝ๊ฒ ์ฌ์ฉ ํ ์ ์๊ฒ ํ๋ Hook์ด๋ค.
2 - 1. State์ Ref
์์ ์ฝ๋๋ฅผ ์คํํด ๋ณด๋ฉด, ๋ฒํผ์ ํ๋ฒ ๋๋ฅผ๋๋ง๋ค,
count
๋ผ๋ ์ํ์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด์, ์ฝ์์ ์ฐ์ "๋ฆฌ๋ ๋๋ง"์ด๋ผ๋ ๋ฌธ์๊ฐ ์ถ๋ ฅ๋๋ค.์ปดํฌ๋ํธ(ํจ์) ๋ด๋ถ์ ์ํ๊ฐ์ด ๋ณ๊ฒฝ๋์ด, ์ปดํฌ๋ํธ ์์ฒด๊ฐ ๋ค์ ๋ ๋๋ง ๋๋ ๊ฒ์ด๋ค. ์์ฃผ ๋ณ๊ฒฝ๋๋ state๊ฐ์ ์ฌ์ฉ์, ์ฑ๋ฅ์ ์ผ๋ก ์ข์ง ์๋ค.
์ด๊ฒ์ useRef๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝํด ๋ณด๋ฉด,
Code 1๊ณผ ๋ค๋ฅธ์ ์ ์ด์ ์ useState๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌํ๋ ์ํ๊ฐ์ useRef๋ก ๋ณ๊ฒฝํ ๊ฒ์ด๋ค.
๋ฒํผ์ ํด๋ฆญ์, "๋ฆฌ๋ ๋๋ง"์ด๋ผ๋ ๋ฌธ์๊ฐ ์ ํ ์ถ๋ ฅ๋์ง ์๋๋ค. state์ ๋ค๋ฅด๊ฒ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ์ปดํฌ๋ํธ (ํจ์)์ ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋์ง ์๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋์ง ์๋๋ผ๋,
increaseRef
ํจ์ ๋ด๋ถ์ ์ ํ์๋ console.log์ ์ํ์ฌ ๋ณ๊ฒฝ๋๋ ref์ ๊ฐ์ ์ ์ ์๋ค
console.log(countRef)๋ฅผ ์คํํด ๋ณด๋ฉด {current : 0}์ด๋ผ๋ ๊ฐ์ฒด ๊ฐ์ ์ป์ ์ ์๋ค. ์ฐ๋ฆฌ๊ฐ ํ์ํ ๊ฒ์ ํด๋น ๊ฐ์ฒด์ value ๊ฐ์ด๋ฏ๋ก, increaseRef์ ์คํ ๊ตฌ๋ฌธ์ countRef.current๋ก ์์ฑํ ๊ฒ.
2 - 2. ์ผ๋ฐ ๋ณ์์ Ref
์ฐ์ Code 3์ ๋ํ ์ค๋ช ์ ๊ฐ๋ตํ๊ฒ ํ์๋ฉด, App ์ปดํฌ๋ํธ ๋ด์ ์ผ๋ฐ๋ณ์
countVar
, **ref์ธcountRef
**๋ฅผ ๋ณ๊ฒฝ์์ผ์ฃผ๋ ํจ์ increaseVar, increaseRef๋ฅผ ๊ฐ๊ฐ ์ ์ธํ ๋ค, **๋ธ๋ผ์ฐ์ ๋ฅผ ๋ฆฌ๋ ๋๋ง ์์ผ์ค ํจ์doRendering
**์ ์ ์ธ ํด๋จ๋ค.Code 3์ ์คํ ํด ๋ณด๋ฉด, ๋ฆฌ๋ ๋๋ง์ด ๋๊ธฐ ์ , countVar, countRef๋ 1์ฉ ์ฆ๊ฐํ๋ฉด์ ์ ์๋ํ๋ค.
ํ์ง๋ง, doRenderingํจ์๊ฐ ์คํ๋ ํ์๋ countVar๋ณ์๋ 0์ผ๋ก ์ด๊ธฐํ ๋๊ณ , countRef๋ ์ด์ ์ ๋ํด์ง ๊ฐ์ด ๊ทธ๋๋ก ์ ์ง๋๋ค.
๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋๋ฉด, ์ปดํฌ๋ํธ(ํจ์)์ ๋ชจ๋ ๋ก์ง์ด ์ฌ์คํ๋๋๋ฐ, ์ด ๊ณผ์ ์์ ์ปดํฌ๋ํธ ๋ด์ ์ผ๋ฐ ๋ณ์ countVar๋ 0์ผ๋ก ์ด๊ธฐํ๋์ง๋ง, ref๋ ๊ทธ๋ ์ง ์๊ณ ์ด์ ์ ๊ฐ์ ๊ทธ๋๋ก ์ ์งํ๋ค.
์ ๋ฆฌํ์๋ฉด, useRef๋ ์ด๋ ํ ๊ฐ์ ๋ณํ์์ผ์ผ ํ์ง๋ง, ๊ทธ ๊ฐ์ด ๋ ๋๋ง์ ๋ฐ์์์ผ์ผ ํ์ง ์์์ผ ํ ๋ ์ฌ์ฉํ๋ค.
Last updated