State
1. ๊ฐ์
๋ฆฌ์กํธ์์ props๊ฐ ์ค์ํ๋ฏ์ด state์ ๊ฐ๋ ๋ ์ค์ํ๋ค. ๊ณผ๊ฑฐ์๋ ํด๋์คํ ์ปดํฌ๋ํธ์์๋ง state๋ฅผ ์ฌ์ฉํด ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์์๋๋ฐ ๋ฆฌ์กํธ 16.8v ์ดํ์๋ ๋ฆฌ์กํธ์ Hook๊ฐ๋ ์ด ๋์ ๋์ด ํจ์ํ ์ปดํฌ๋ํธ์์๋ state๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ๋์๋ค.
ํจ์ํ ์ปดํฌ๋ํธ์ useState Hook
๋ฅผ ํตํด state๋ฅผ ์ฌ์ฉํ๋ค. useState
๋ Hooks
ํํธ์์ ๋ ์์ธํ ๋ค๋ฃจ๋๋ก ํ๊ณ ์ฌ๊ธฐ์๋ ๋ฆฌ์กํธ์ state
๊ฐ๋
์ ๋ํด ๋ค๋ฃจ๋๋ก ํ๋ค.
2. State๋?
์ผ๋ฐ์ ์ผ๋ก ์ปดํฌ๋ํธ์ ๋ด๋ถ์์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํด์ผํ ๋์ ์ฌ์ฉํ๋ค.
ํ๋กํผํฐ(props)์ ํน์ง์ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๊ฐ์ ๋ฐ๊ฟ ์ ์๋ค๋ ๊ฒ์ด๋ค. ํ์ง๋ง ๊ฐ์ ๋ฐ๊ฟ์ผ ํ๋ ๊ฒฝ์ฐ๋ ๋ถ๋ช ์กด์ฌํ๋ฉฐ, ์ด๋ด๋ state๋ผ๋ ๊ฒ์ ์ฌ์ฉํ๋ค.
๊ฐ์ ์ ์ฅํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ์ฒด๋ก ๋ณดํต ์ด๋ฒคํธ์ ํจ๊ป ์ฌ์ฉ๋๋ค.
์ปดํฌ๋ํธ์์ ๋์ ์ธ ๊ฐ์ ์ํ(state)๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉ๋๋ค ๋ณผ ์ ์๋ค.
3. state์ ํน์ง
๋ฆฌ์กํธ์ state๋ ํ๋์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด์ด๋ค.
๋ ๋๋ง์ด๋ ๋ฐ์ดํฐ ํ๋ฆ์ ์ฌ์ฉ๋๋ ๊ฐ๋ง state์ ํฌํจ์์ผ์ผ ํ๋ค. state๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ ๋๋ง๋๊ธฐ ๋๋ฌธ์ ๋ ๋๋ง๊ณผ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ด๋ จ ์๋ ๊ฐ์ ํฌํจ์ํค์ง ์๋๋ค.
state๋ ์ง์ ์ ์ธ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค.
useState Hook
์์ ๋ค๋ฃจ๊ฒ ๋๋setState()
ํจ์๋ฅผ ํตํด state๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ค. ์ฆsetState()
ํจ์๋ฅผ ํตํด ์ํ ๋ณ๊ฒฝ์ ์ถ์ ํ๊ณ ๋ณ๊ฒฝ์ ๋ฐ๋ผ ๊ตฌ์ฑ ์์๋ฅผ ๋ค์ ๋ ๋๋ง์ ํ ์ ์๋ค.
4. state๋ฅผ ์ง์ ๋ณ๊ฒฝ์ ํด์๋ ์๋๋ ์ด์
state๋ฅผ ์ง์ ์์ ํ๊ฒ ๋๋ฉด ๋ฆฌ์กํธ๊ฐ render ํจ์๋ฅผ ํธ์ถํ์ง ์์ ์ํ ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ ๋ ๋๋ง์ด ์ผ์ด๋์ง ์์ ์ ์๋ค.
setState๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋์ํ๋ค. ๋๋ฌธ์ state๊ฐ ์ง์ ์์ ๋์ด ์ฌ๋ฌ๋ฒ ์ํ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๊ฒฝ์ฐ ์ด์ ์ ๋ฐ์ดํธ ๋ด์ฉ์ด ๋ค์ ์ ๋ฐ์ดํธ ๋ด์ฉ์ ๋ฎ์ด ์ฐ์ฌ์ง ์ ์๋ค.
ํด๋์คํ ์ปดํฌ๋ํธ์ PureComponent์์ ๋์ํ์ง ์๋๋ค. PureComponent๋ this.state๊ณผ setState๋ฅผ ๋น๊ตํด ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ง render ํจ์๋ฅผ ํธ์ถํ๋ค. ์ด๋, state๋ฅผ ์ง์ ์์ ํ๊ฒ ๋๋ฉด ๊ธฐ์กด์ this.state๊ณผ setState๊ฐ ๋์ผํ๋ฏ๋ก ๋ฆฌ์กํธ๋ render ํจ์๋ฅผ ํธ์ถํ์ง ์๋๋ค.
PureComponent: ๊ธฐ๋ณธ Component์์ ๋จ์ํ ์ฑ๋ฅ์ ์ธ ์ฐจ์ด๋ก PureComponent๋
shouldComponentUpdate
๋ฅผ ํตํด props์ state์ ์์ ๋น๊ต๋ฅผ ํ์ฌ ๋ถํ์ํ re-render๋ฅผ ๋ง์์ค๋ค. ํจ์ํ ์ปดํฌ๋ํธ์ผ ๊ฒฝ์ฐ์๋ PureComponent์ ์ญํ ์ React.memo๊ฐ ํ๊ฒ ๋๋ค.
5. Conclusion
๋ฆฌ์กํธ์์ ์ ๋ง ๋ง์ด ์ฌ์ฉํ๋ state์ด๋ค. ํด๋์คํ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฉํ์ง ์์ ์ ํํ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด์ง๋ง ํจ์ํ ์ปดํฌ๋ํธ์์์ ์ฌ์ฉ๋ฒ์ ์ผ์ถ ์๊ณ ์๋ค. ํ์ง๋ง ์ ํํ state๊ฐ ์ด๋ค ๊ฐ๋ ์ธ์ง์ ๋ํด ์ค๋ช ํ๋ผ๊ณ ํ์ ๋ ๋ชปํ์๋ค. ์ค๋ ์ดํ์ ์งง๊ฒ ๋๋ง ๋๊ตฌ์๊ฒ ์ค๋ช ์ ํ ์ ์์ ๊ฑฐ ๊ฐ์ ๋๋์ด ๋ ๋ค. ๊ทธ๋ฆฌ๊ณ PureComponent๋ ์ฐพ์๋ณด๋๊น ํด๋์คํ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ๋ ๊ฐ๋ ์ด์๋ ๊ฑฐ ๊ฐ๋ค. ํด๋น ๊ฐ๋ ์ ๋ํ ๊น์ ๊ณต๋ถ๋ณด๋ค๋ ๊ฐ๋จํ๊ฒ ์ด๋ค ๊ฐ๋ ์ธ์ง๋ง ์๊ณ ๋์ด๊ฐ๊ณ ์์ธํ ๊ฐ๋ ๊ณต๋ถ๋ React.memo๋ก ํ์.๐
์ฐธ๊ณ
๋์ - ์ํ์ ์ฒ์ ๋ง๋ ๋ฆฌ์กํธ [React] 4. React ์ปดํฌ๋ํธ(3) - State ์์๋ณด๊ธฐ(React Hooks ์ฌ์ฉ) state๋ฅผ ์ง์ ๋ณ๊ฒฝํ์ง ์๊ณ setState๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ๋ํด์ ์ค๋ช ํ์ธ์. React - PureComponent ์ ๋๋ก ์ฌ์ฉํ๊ธฐ
๐ 2022-07-25
Last updated