๐Frontend/๐etc
[WIL] Life cycle, Hooks
Hoon2
2022. 8. 7. 17:22
728x90
Life cycle (์๋ช ์ฃผ๊ธฐ)
๋ฆฌ์กํธ๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ View๋ฅผ ์ค์ฌ์ผ๋ก ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ์๋ ๋ผ์ดํ์ฌ์ดํด ์ฆ, ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ๊ฐ ์กด์ฌํ๋ค. ์ปดํฌ๋ํธ์ ์๋ช ์ ๋ณดํต ํ์ด์ง์์ ๋ ๋๋ง๋๊ธฐ ์ ์ธ ์ค๋น ๊ณผ์ ์์ ์์ํ์ฌ ํ์ด์ง์์ ์ฌ๋ผ์ง ๋ ๋์ด๋๋ค.
ํด๋์คํ
- Mounting : ์ปดํฌ๋ํธ์ ์ธ์คํด์ค ์์ฑ, DOM ์์ ์ฝ์
๋ ๋์ ์์๋๋ก ํธ์ถ
- Constructor : ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ์์ฑ์๋ ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋๊ธฐ์ ์ ํธ์ถ๋๋ค.
- getDerivedStateFromProps: ์ต์ด ๋ง์ดํธ ์์ ๊ฐฑ์ ์ ๋ชจ๋์๊ฒ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ง์ ์ ํธ์ถ๋ฉ๋๋ค.
- render : ํด๋์ค ์ปดํฌ๋ํธ์์ ๋ฐ๋์ ๊ตฌํ๋์ผํ ์ ์ผํ ๋ฉ์๋, ํธ์ถ๋๋ฉด props,state ๊ฐ์ ํ์ฉํ์ฌ null์ ๋ฐํ
- Updating : ์ปดํฌ๋ํธ๊ฐ re-rendering ๋ ๋, ์์๋๋ก ํธ์ถ ํ๋ ๋ฉ์๋
- shouldComponentupdate : ์ปดํฌ๋ํธ๊ฐ update๋๋ ์ฑ๋ฅ์ ์ต์ ํ ์ํค๊ณ ์ถ์๋ ์ฌ์ฉ ๋ถ๋ชจ,์์ ์ปดํฌ๋ํธ ๋ค render ์คํ
- getSnapshotBeforeUpdate : ๋ ๋๋ง ๊ฒฐ๊ณผ๊ฐ ์ค์ DOM์ ๋ฐ์๋๊ธฐ ์ ์ ํธ์ถ, ๋ค์์์ ๋ฉ์๋์ธ DidUpdate๋ ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ๋ ํ์ ํธ์ถ
- componentDidUpdate : ์ ๋ฐ์ดํธ๊ฐ ์ผ์ด๋ ์งํ์ ํธ์ถ, ์ต์ด ๋ ๋๋ง์๋ ํธ์ถ๋์ง ์๋๋ค.
- Unmounting : ์ปดํฌ๋ํธ๊ฐ DOM ์์์ ์ ๊ฑฐ๋ ๋์ ํธ์ถ๋๋ ๋ฉ์๋
- componentWillUnmount : ๋ง์ดํธ๊ฐ ํค์ ๋์ด ์ ๊ฑฐ๋๊ธฐ ์ง์ ์ ํธ์ถ, ์ด ๋ฉ์๋๋ ๋ค์ ๋ ๋ฉ์ด๋ง ๋์ง ์๋๋ค
ํจ์ํ
- useEffect : componentDidMount, componentDidUpdate ์ํ
- ์ปดํฌ๋ํธ ์์ state, props์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ณ , ๊ธฐ๋ณธ์ ์ผ๋ก ์ฒซ๋ฒ์งธ ๋ ๋๋ง๊ณผ ์ดํ ๋ชจ๋ ์ ๋ฐ์ดํธ์์ ์ํ๋๋ค ๋ํ, ๋๋ฒ์งธ ์ธ์๋ก ์กฐ๊ฑด์ ๊ฑธ๊ณ ์ฒซ ๋ฒ์งธ ๋ ๋๋ง์ด๋ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ ๋ ์ํํ๋๋ก ์ค์ ๊ฐ๋ฅ
- cleanup : ๋ชจ๋ effect๋ ์ ๋ฆฌ๋ฅผ ์ํ ํจ์๋ฅผ ๋ฐํํ ์ ์๋ค. ์ฆ ์ถ๊ฐ ์ ๊ฑฐ๊ฐ ํ๋์ effect๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ
- ์ฑ๋ฅ ์ต์ ํ : ๋ชจ๋ ๋ ๋๋ง ์ดํ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐ์์ํค๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ค. ์ด๋ effect๋ฅผ ๊ฑด๋ ๋ฐ๋๋ก ํ ์ ์๋ค. ๋ ๋ฒ์งธ ์ธ์๋ฅผ ๋ฐฐ์ด๋ก ๋๊ธฐ๋ฉด ๋๋ค.
๋ฆฌ์กํธ ํ (hooks)
- useState : ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ๊ด๋ฆฌ ํ ์์๋ค
- useEffect : ๋ ๋๋ง ์ดํ์ ์คํํ ์ฝ๋๋ฅผ ๋ง๋ค์ ์๋ค.
- useContext : ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ์์ ์ปดํฌ๋ํธ ๊ฐ์ ๋ณ์์ ํจ์๋ฅผ ์ ์ญ์ ์ผ๋ก ์ ์ ํ ์์๋ค.
- useReducer : state ์ ๋ฐ์ดํธ ๋ก์ง์ reducer ํจ์์ ๋ฐ๋ก ๋ถ๋ฆฌ ํ ์ ์๋ค.
- useRef : ์ปดํฌ๋ํธ๋ html ์์๋ฅผ ๋ํผ๋ฐ์ค(ref)๋ก ๊ด๋ฆฌํ ์ ์๋ค.
- urrent ์์ฑ์ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋๋ฐ, ์ด ์์ฑ์ ๋ค์ ๋๋๋ง์ด ๋์ง ์๋๋ค.
- ์ฌ์ฉํด์ผ ํ ๋ : ์ ๋๋ฉ์ด์ ์ ์ง์ ์ ์ผ๋ก ์คํ์ํฌ๋, ํฌ์ปค์ค, ํ ์คํธ ์ ํ์์ญ, ๋ฏธ๋์ด ์ฌ์์ ๊ด๋ฆฌ ํ ๋
- forwardRef : useRef๋ก ๋ง๋ ๋ํผ๋ฐ์ค๋ฅผ ์์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํ ์ ์๋ค.
- useImperativeHandle : useRef๋ก ๋ง๋ ๋ํผ๋ฐ์ค์ ์ํ์ ๋ฐ๋ผ, ์คํํ ํจ์๋ฅผ ์ ์ ํ ์ ์๋ค.
- useMemo, useCallback : ์์กด์ฑ ๋ฐฐ์ด์ ์ ํ ๊ฐ์ด ๋ณํ ๋๋ง ๊ฐ, ํจ์๋ฅผ ๋ค์ ์ ์ํ ์ ์๋ค.
- useLayoutEffect : ๋ชจ๋ DOM ๋ณ๊ฒฝ ํ, ๋ธ๋ผ์ฐ์ ๊ฐ ๋๋ํ๊ธฐ ์ ์ ์คํ ๋๋ ๊ธฐ๋ฅ์ ์ ํ ์ ์๋ค.
- useDebugValue : ์ฌ์ฉ์ ์ ์ Hook์ ๋๋ฒ๊น ์ ๋์์ค๋ค. *๋๋ฒ๊น : ์ฝ๋์์ ๋ฒ๊ทธ ์ ๊ฑฐ
728x90