Dev Thread
๋ก๊ทธ์ธ
Dev Thread
๋ก๊ทธ์ธ
[React] ๐ ํผ๊ณผ ์ด๋ฒคํธ ์ฒ๋ฆฌํ๊ธฐ
pyeonne
ยท
2022๋ 6์ 27์ผ
ํ๋ก์ฐ
0
React
์ ๋ก๋ฒ ์ด์ค
0
์ ๋ก๋ฒ ์ด์ค ํ๋ก ํธ์๋ ์ค์ฟจ 4๊ธฐ
๋ชฉ๋ก ๋ณด๊ธฐ
24/25
๐ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ
React state๋ฅผ "์ ๋ขฐ ๊ฐ๋ฅํ ๋จ์ผ ์ถ์ฒ(single source of truth)"๋ก ๋ง๋ค์ด ๋ ์์๋ก ๊ฒฐํฉํ ์ ์๋๋ฐ, ์ด๋ฌํ ๋ฐฉ์์ผ๋ก Reac์ ์ํด ๊ฐ์ด ์ ์ด๋๋ ์ ๋ ฅ ํผ ์๋ฆฌ๋จผํธ๋ฅผ "์ ์ด ์ปดํฌ๋ํธ(controlled component)"๋ผ๊ณ ํ๋ค.
์ ๋ฐ์ ์ผ๋ก
<input type="text">
,
<textarea>
๋ฐ
<select>
๋ชจ๋ ๋งค์ฐ ๋น์ทํ๊ฒ ๋์ํ๋ค. ๋ชจ๋ ์ ์ด ์ปดํฌ๋ํธ๋ฅผ ๊ตฌํํ๋๋ฐ value ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ํ์ฉํ๋ค.
์ฌ๋ฌ input ์๋ฆฌ๋จผํธ๋ฅผ ์ ์ดํด์ผํ ๋, ๊ฐ ์๋ฆฌ๋จผํธ์ name ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ถ๊ฐํ๊ณ event.target.name ๊ฐ์ ํตํด ํธ๋ค๋ฌ๊ฐ ์ด๋ค ์์ ์ ํ ์ง ์ ํํ ์ ์๊ฒ ํด์ค๋ค.
์ฃผ์ด์ง input ํ๊ทธ์ name์ ์ผ์นํ๋ state๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ES6์ computed property name ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๊ณ ์๋ค.
๋๋ถ๋ถ ๊ฒฝ์ฐ์ ํผ์ ๊ตฌํํ๋๋ฐ ์ ์ด ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ชจ๋ state ์ ๋ฐ์ดํธ์ ๋ํ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์์ฑํ๋ ๋์ ๋น์ ์ด ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๋ ค๋ฉด ref๋ฅผ ์ฌ์ฉํ์ฌ DOM์์ ํผ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
Ref์ ๋ฐ๋์งํ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ๋ค.
ํฌ์ปค์ค, ํ ์คํธ ์ ํ์์ญ, ํน์ ๋ฏธ๋์ด์ ์ฌ์์ ๊ด๋ฆฌํ ๋.
์ ๋๋ฉ์ด์ ์ ์ง์ ์ ์ผ๋ก ์คํ์ํฌ ๋.
์๋ ํํฐ DOM ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ React์ ๊ฐ์ด ์ฌ์ฉํ ๋.
์ ์ธ์ ์ผ๋ก ํด๊ฒฐ๋ ์ ์๋ ๋ฌธ์ ์์๋ ref ์ฌ์ฉ์ ์ง์ํด์ผ ํ๋ค.
ํจ์ ์ปดํฌ๋ํธ์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์์ ์ปดํฌ๋ํธ์ ref๋ฅผ ์ ์ดํ๊ธฐ ์ํด์๋ ref forwarding์ ์ฌ์ฉํด์ผ ํ๋ค.
useRef๋ .current ํ๋กํผํฐ๋ก ์ ๋ฌ๋ ์ธ์(initialValue)๋ก ์ด๊ธฐํ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ref ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. ๋ฐํ๋ ๊ฐ์ฒด๋ ์ปดํฌ๋ํธ์ ์ ์์ ์ฃผ๊ธฐ๋ฅผ ํตํด ์ ์ง๋๋ค.
useRef๋ก ๋ง๋ ๊ฐ๋ณ๊ฐ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด๋ ๋ฆฌ๋ ๋๋ง์ ๋ฐ์์ํค์ง ์๋๋ค.
React๊ฐ DOM ๋ ธ๋์ ref๋ฅผ attachํ๊ฑฐ๋ detachํ ๋ ์ด๋ค ์ฝ๋๋ฅผ ์คํํ๊ณ ์ถ๋ค๋ฉด ๋์ ์ฝ๋ฐฑ ref๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
์ฝ๋ฐฑ ref๋ฅผ ์ฌ์ฉํ๋ฉด ์์ ์ปดํฌ๋ํธ๊ฐ ๋์ค์ ์ธก์ ๋ ๋ ธ๋๋ฅผ ํ์ํ๋๋ผ๋ (์: ํด๋ฆญ์ ๋ํ ์๋ต์ผ๋ก) ์ฌ์ ํ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์ด์ ๋ํ ์๋ฆผ์ ๋ฐ๊ณ ์ธก์ ์ ์ ๋ฐ์ดํธ ํ ์ ์๋ค.
๐ ์ฐธ๊ณ ๋ํผ๋ฐ์ค
<input>: ์ ๋ ฅ ์์ - MDN
ํผ - React Doc
๋น์ ์ด ์ปดํฌ๋ํธ - React Doc
Ref์ DOM - React Doc
Forwarding Refs - React Doc
useRef - React Doc
์ธ์คํด์ค ๋ณ์์ ๊ฐ์ ๊ฒ์ด ์์ต๋๊น? - React Doc
Key - React Doc
pyeonne
๊ฑด๊ฐํ ๋ชธ๊ณผ ๋ง์์์ ๊ฑด๊ฐํ ์ฝ๋๊ฐ ํ์ด๋๋ค !
ํ๋ก์ฐ
์ด์ ํฌ์คํธ
[React] ๐ ๋ฆฌ์คํธ์ Key
๋ค์ ํฌ์คํธ
[React] ๐ ์ปดํฌ๋ํธ ์คํ์ผ๋ง
0๊ฐ์ ๋๊ธ
๋๊ธ ์์ฑ