์ด๋ฒ์๋ ์ปดํฌ๋ํธ์ props ๋ผ๋ ๊ฐ๋ ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. props ๋ properties ์ ์ค์๋ง์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ด๋ ํ ๊ฐ์ ์ปดํฌ๋ํธ์๊ฒ ์ ๋ฌํด์ค์ผ ํ ๋, props ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Props๋ Properties์ ์ค์๋ง.
- Props๋ ์์ํ๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์๋ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ๋ฑ์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
- Props๋ ์ฝ๊ธฐ ์ ์ฉ(immutable)์ผ๋ก ์๋ ์ปดํฌ๋ํธ ์ ์ฅ์์๋ ๋ณํ์ง ์๋๋ค.
(๋ณํ๊ฒ ํ๊ณ ์ ํ๋ฉด ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ state๋ฅผ ๋ณ๊ฒฝ์์ผ์ค์ผํ๋ค.)
๋ถ๋ชจ Board ์ปดํฌ๋ํธ์์ ์์ Square ์ปดํฌ๋ํธ๋ก โprop์ ์ ๋ฌโํ์ต๋๋ค. props ์ ๋ฌํ๊ธฐ๋ React ์ฑ์์ ๋ถ๋ชจ์์ ์์์ผ๋ก ์ ๋ณด๊ฐ ์ด๋ป๊ฒ ํ๋ฌ๊ฐ๋์ง ์๋ ค์ค๋๋ค.
์>
A ๋ถ๋ชจ ์ปดํฌ๋ํธ : state = { a : "a" }
< B ์ปดํฌ๋ํธ aProps= {this.state.a} />
B ์์ ์ปดํฌ๋ํธ a state ํ์ : this.props.aProps
๋ฆฌ์กํธ์์ ๋ฐ์ดํฐ๊ฐ ๋ณํ ๋ ํ๋ฉด์ ๋ค์ ๋ ๋๋ง ํด์ฃผ๊ธฐ ์ํด์๋ React State๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์๋ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋๊ฒ ์๋ ํด๋น ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ค๋ฉด?
State์ผ๋ก
=> ์๋ฅผ ๋ค์ด์ ๊ฒ์ ์ฐฝ์ ๊ธ์ ์ ๋ ฅํ ๋ ๊ธ์ด ๋ณํ๋๊ฒ์ state์ ๋ฐ๊ฟ- State ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ(mutable)
3.State ์ด ๋ณํ๋ฉด re-render ๋๋ค.
์ปดํฌ๋ํธ์ ๋ ๋๋ง ๊ฒฐ๊ณผ๋ฌผ์ ์ํฅ์ ์ฃผ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์๋ ๊ฐ์ฒด์ ๋๋ค. (State๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ปดํฌ๋ํธ๋ ๋ฆฌ๋๋๋ง(Re-rendering)๋ฉ๋๋ค. ๋ํ State๋ ์ปดํฌ๋ํธ ์์์ ๊ด๋ฆฌ๋ฉ๋๋ค.
React Hooks๋ ReactConf 2018์์ ๋ฐํ๋,
class์์ด state๋ฅผ ์ฌ์ฉํ ์ ์๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋๋ค.
ํญ์ ๊ธฐ์ ์ ๊ทธ ์ ์ ๊ฒ์ ๋ถํธํจ์ด๋ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด์ ๋์ฑ ๋ฐ์ ํฉ๋๋ค.
๊ทธ์ ๊ฐ์ด React Hooks๋ ์ฃผ๋ก Class Component๋ก ์ฌ์ฉ๋์ด์จ React์์ ๋๊ปด์๋ ๋ถํธํจ์ด๋ ๋ฌธ์ ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด์ ๊ฐ๋ฐ๋์์ต๋๋ค.
์๋ React๋ ์ฃผ๋ก Class Component๋ฅผ ์ฌ์ฉํ๊ณ React Hooks๋ Functional Component๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋จผ์ ๊ทธ ๋ถ๋ถ ๋ถํฐ ๋น๊ตํด๋ณด๊ฒ ์ต๋๋ค.
์ด๋ ๊ฒ๋ ์ค์ํ ์๋ช ์ฃผ๊ธฐ๋ฅผ ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฉ์ ๋ชปํ๊ธฐ ๋๋ฌธ์ ํจ์ํ ์ปดํฌ๋ํธ๊ฐ ๋ ๊ฐ๊ฒฐํ๊ณ ๋น ๋ฅด๋๋ผ๋ ํด๋์คํ ์ปดํฌ๋ํธ๋ฅผ ์จ์์ต๋๋ค.
์ด๊ฒ์ React 16.8 Hooks ์
๋ฐ์ดํธ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค!
์ด๋ก ์ธํด์ ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์๋ช
์ฃผ๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ
์ปดํฌ๋ํธ ์์ํ์๋ง์ API๋ ํธ์ถํ๊ณ ๋ง์ ๋ถ๋ถ์ ํ ์ ์๊ฒ ๋์์ต๋๋ค.
๊ทธ๋ผ Hooks์ผ๋ก ์ธํด ์ด๋ป๊ฒ ๊ฐ๋ฅํ๊ฒ ๋์๋์ง ์์ค๋ก ํ์ธ ํด๋ณด์๋ฉด...
์ผ์ชฝ ์ฝ๋์ ์ค๋ฅธ์ชฝ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ ๋ช
ํ๊ฒ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง ๊ฑธ ๋ณผ์๊ฐ ์์ต๋๋ค.
๊ทธ ์ด์ ๋ Class Component์์๋ ์๋ช
์ฃผ๊ธฐ๋ฅผ ์ด์ฉํ ๋
componentDidMount ์ ComponentDIdUpdate ๊ทธ๋ฆฌ๊ณ componentWillUnmount ์ด๋ ๊ฒ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ง๋ง ๋ฆฌ์กํธ ํ
์ ์ฌ์ฉํ ๋๋ useEffect ์์์ ๋ค ์ฒ๋ฆฌ๋ฅผ ํด์ค ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
HOC ์ปดํฌ๋ํธ๋ฅผ Custom React Hooks ๋ก ๋์ฒดํด์ ๋๋ฌด๋ ๋ง์ Wrapper ์ปดํฌ๋ํธ๋ฅผ ์ค์ด๊ฒ ๋๋ ๊ฒ์ ๋๋ค. ์ค์ ๋ก ๋ณด๋ฉด์ ์ดํดํด๋ณผ๊ฒ์.
ํ๋ฉด์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ก์ง๋ง์ ๋ถ๋ฆฌํด์ component๋ก ๋ง๋ค๊ณ , ์ฌ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ UI์ ๊ฐ์ ๋ค๋ฅธ ๋ถ๋ถ๋ค์ parameter๋ก ๋ฐ์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
์ปดํฌ๋ํธ๋ฅผ ์ธ์๋ก ๋ฐ์์ ์๋ก์ด ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌํดํ๋ ํจ์์
๋๋ค.
์ ์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ณตํต์ ์ธ ๋ถ๋ถ์ HOC ์ปดํฌ๋ํธ์ ๋ฃ์ด์ฃผ๊ณ ๊ทธ HOC ์ปดํฌ๋ํธ๋ก ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ์ฃผ๋ฉด ๋ชจ๋ ์ปดํฌ๋ํธ์ ๋ฐ๋ก ์ธ์ฆ์ ์ํ ๋ถ๋ถ์ ๋ฃ์ด์ฃผ์ง ์์๋ ๋ฉ๋๋ค. Hooks๊ฐ ๋์ค๊ธฐ ์ ์๋ ์ด ๋ฐฉ๋ฒ์ด ์ถ์ฒ๋๋ ๋ฐฉ๋ฒ์ด์์ต๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ ๋ฌธ์ ๋ ๋ฐ๋ก ๋๋ฌด๋ ๋ง์ Wrapper ์ปดํฌ๋ํธ๊ฐ ์๊ธธ์ ์๋ค๋ ๊ฒ๋๋ค.
์๋์ ๊ทธ๋ฆผ์ฒ๋ผ Wrapper๊ฐ ๋๋ฌด ๋ง์์ง๋ฉด ๋ฐ์ดํฐ ํ๋ฆ์ ํ์
ํ๊ธฐ๊ฐ ํ๋ค์ด์ง๋๋ค.
๋ฐ๋ก Custom React Hooks๋ฅผ ์ด์ฉํด์ ํด๊ฒฐํ ์๊ฐ ์์ต๋๋ค.