React์์ ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ๋ ํฌ๊ฒ ์ธ ๋จ๊ณ๋ก ๊ตฌ๋ถ๋๋ค.
: ๋ง์ดํ (Mounting), ์ ๋ฐ์ดํธ(Updating), ๊ทธ๋ฆฌ๊ณ ์ธ๋ง์ดํ (Unmounting)
๊ฐ ๋จ๊ณ๋ ์ปดํฌ๋ํธ์ ์์ฑ, ์ ๋ฐ์ดํธ ๋ฐ ํ๊ดด ๊ณผ์ ์ ํด๋นํ๋ค.
1. ๋ง์ดํ (Mounting)
์ด ๋จ๊ณ๋ ์ปดํฌ๋ํธ๊ฐ ์ฒ์์ผ๋ก ์์ฑ๋์ด DOM์ ์ฝ์ ๋๋ ๊ณผ์ ์ด๋ค. ๋ง์ดํธ ๊ณผ์ ์์๋ ์ฒ์์ผ๋ก render ๋ฉ์๋๊ฐ ํธ์ถ๋์ด ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๋ ๋๋ง ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๊ฐ ๋ง์ดํ ๋จ๊ณ์์ ํธ์ถ๋๋ค. (์์ฃผ ์ฌ์ฉ๋๋ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ ๋ณผ๋์ฒด)
- constructor(): ์ปดํฌ๋ํธ์ ์์ฑ์. ์ปดํฌ๋ํธ์ ์ด๊ธฐ ์ํ๋ฅผ ์ค์ ํ๋ค.
- static getDerivedStateFromProps(): ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋๊ธฐ ์ ์ ํธ์ถ๋๋ค. props์ ์ํด state๊ฐ ์ํฅ์ ๋ฐ์ ๋ ์ฌ์ฉ๋๋ค.
- render(): ์ค์ DOM์ ์์ฑํ๋ ๋ฉ์๋์ด๋ค.
- componentDidMount(): ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋ ์งํ์ ํธ์ถ๋๋ค. ๋คํธ์ํฌ ์์ฒญ, DOM ์กฐ์ ๋ฑ์ ์์ ์ ์ํํ๊ธฐ ์ข์ ์์น์ด๋ค.
** UNSAFE_componentWillMount() ๋ฉ์๋๋ ๊ธฐ์กด์ ์ฌ์ฉ๋์์ง๋ง ์ด์ ๋ ์ฌ์ฉํ๋ฉด ์ ๋๋ค. (rename-unsafe-lifecycles codemod๋ก ์ปดํฌ๋ํธ๋ฅผ ์ต์ ๋ฌธ๋ฒ์ผ๋ก ์๋ ๊ฐฑ์ ์ํฌ ์ ์๋ค.)
2. ์ ๋ฐ์ดํธ(Updating)
์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋ ํ, ์ํ(state) ๋๋ props์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด ์ปดํฌ๋ํธ๋ ์ ๋ฐ์ดํธ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค. ์ด๋ render ๋ฉ์๋๊ฐ ๋ค์ ํธ์ถ๋์ด ๋ณ๊ฒฝ๋ ์ํ๋ props์ ๋ฐ๋ผ UI๊ฐ ์ ๋ฐ์ดํธ๋๋ค.
์ ๋ฐ์ดํธ ๊ณผ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
- static getDerivedStateFromProps(): props์ ๋ณํ์ ๋ฐ๋ผ state๋ฅผ ์ ๋ฐ์ดํธํ ํ์๊ฐ ์์ ๋ ํธ์ถ๋๋ค.
- shouldComponentUpdate(): ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง์ ํ์ฉํ ์ง ๋ง์ง ๊ฒฐ์ ํ๋ค. ์ฑ๋ฅ ์ต์ ํ์ ์ ์ฉํ๋ค.
- render(): ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋๋ง ํ๋ค.
- getSnapshotBeforeUpdate(): DOM ๋ณํ๊ฐ ๋ฐ์๋๊ธฐ ์ง์ ์ ํธ์ถ๋๋ค. DOM์ ํ์ฌ ์ํ(์: ์คํฌ๋กค ์์น)๋ฅผ ์บก์ฒํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- componentDidUpdate(): ์ปดํฌ๋ํธ ์ ๋ฐ์ดํธ๊ฐ ๋๋ ํ ํธ์ถ๋๋ค. ์ด์ props์ state๋ฅผ ๋น๊ตํ์ฌ ์ถ๊ฐ์ ์ธ ์์ ์ ์ํํ ์ ์๋ค.
** UNSAFE_componentWillUpdate(), UNSAFE_componentWillReceiveProps()๋ ์ด์ ์ฌ์ฉํ๋ฉด ์ ๋๋ค. (๋ง์ฐฌ๊ฐ์ง๋ก rename-unsafe-lifecycles codemod๋ก ์ปดํฌ๋ํธ๋ฅผ ์ต์ ๋ฌธ๋ฒ์ผ๋ก ์๋ ๊ฐฑ์ ์ํฌ ์ ์๋ค.)
3. ์ธ๋ง์ดํ (Unmounting)
์ปดํฌ๋ํธ๊ฐ DOM์์ ์ ๊ฑฐ๋๋ ๋จ๊ณ์ด๋ค. ์ด ๋จ๊ณ์์๋ ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์์ ์ฌ๋ผ์ง๊ฒ ๋๋ค. ์ด ๋จ๊ณ์์๋ ๋ค์ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
- componentWillUnmount(): ์ปดํฌ๋ํธ๊ฐ DOM์์ ์ ๊ฑฐ๋๊ธฐ ์ง์ ์ ํธ์ถ๋๋ค. ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ ๊ฑฐ, ํ์ด๋จธ ํด์ ๋ฑ์ ์ ๋ฆฌ ์์ ์ ์ํํ๋ค.
์ถ์ฒ & ๋ ๋ง์ ์ ๋ณด๋ ์๋์ ๊ณต์ ๋ฌธ์์์ ์ฐพ์ ์ ์๋ค.
React.Component โ React
A JavaScript library for building user interfaces
ko.legacy.reactjs.org
React์์ ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ๋ ํฌ๊ฒ ์ธ ๋จ๊ณ๋ก ๊ตฌ๋ถ๋๋ค.
: ๋ง์ดํ (Mounting), ์ ๋ฐ์ดํธ(Updating), ๊ทธ๋ฆฌ๊ณ ์ธ๋ง์ดํ (Unmounting)
๊ฐ ๋จ๊ณ๋ ์ปดํฌ๋ํธ์ ์์ฑ, ์ ๋ฐ์ดํธ ๋ฐ ํ๊ดด ๊ณผ์ ์ ํด๋นํ๋ค.
1. ๋ง์ดํ (Mounting)
์ด ๋จ๊ณ๋ ์ปดํฌ๋ํธ๊ฐ ์ฒ์์ผ๋ก ์์ฑ๋์ด DOM์ ์ฝ์ ๋๋ ๊ณผ์ ์ด๋ค. ๋ง์ดํธ ๊ณผ์ ์์๋ ์ฒ์์ผ๋ก render ๋ฉ์๋๊ฐ ํธ์ถ๋์ด ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๋ ๋๋ง ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๊ฐ ๋ง์ดํ ๋จ๊ณ์์ ํธ์ถ๋๋ค. (์์ฃผ ์ฌ์ฉ๋๋ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ ๋ณผ๋์ฒด)
- constructor(): ์ปดํฌ๋ํธ์ ์์ฑ์. ์ปดํฌ๋ํธ์ ์ด๊ธฐ ์ํ๋ฅผ ์ค์ ํ๋ค.
- static getDerivedStateFromProps(): ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋๊ธฐ ์ ์ ํธ์ถ๋๋ค. props์ ์ํด state๊ฐ ์ํฅ์ ๋ฐ์ ๋ ์ฌ์ฉ๋๋ค.
- render(): ์ค์ DOM์ ์์ฑํ๋ ๋ฉ์๋์ด๋ค.
- componentDidMount(): ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋ ์งํ์ ํธ์ถ๋๋ค. ๋คํธ์ํฌ ์์ฒญ, DOM ์กฐ์ ๋ฑ์ ์์ ์ ์ํํ๊ธฐ ์ข์ ์์น์ด๋ค.
** UNSAFE_componentWillMount() ๋ฉ์๋๋ ๊ธฐ์กด์ ์ฌ์ฉ๋์์ง๋ง ์ด์ ๋ ์ฌ์ฉํ๋ฉด ์ ๋๋ค. (rename-unsafe-lifecycles codemod๋ก ์ปดํฌ๋ํธ๋ฅผ ์ต์ ๋ฌธ๋ฒ์ผ๋ก ์๋ ๊ฐฑ์ ์ํฌ ์ ์๋ค.)
2. ์ ๋ฐ์ดํธ(Updating)
์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋ ํ, ์ํ(state) ๋๋ props์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด ์ปดํฌ๋ํธ๋ ์ ๋ฐ์ดํธ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค. ์ด๋ render ๋ฉ์๋๊ฐ ๋ค์ ํธ์ถ๋์ด ๋ณ๊ฒฝ๋ ์ํ๋ props์ ๋ฐ๋ผ UI๊ฐ ์ ๋ฐ์ดํธ๋๋ค.
์ ๋ฐ์ดํธ ๊ณผ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
- static getDerivedStateFromProps(): props์ ๋ณํ์ ๋ฐ๋ผ state๋ฅผ ์ ๋ฐ์ดํธํ ํ์๊ฐ ์์ ๋ ํธ์ถ๋๋ค.
- shouldComponentUpdate(): ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง์ ํ์ฉํ ์ง ๋ง์ง ๊ฒฐ์ ํ๋ค. ์ฑ๋ฅ ์ต์ ํ์ ์ ์ฉํ๋ค.
- render(): ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋๋ง ํ๋ค.
- getSnapshotBeforeUpdate(): DOM ๋ณํ๊ฐ ๋ฐ์๋๊ธฐ ์ง์ ์ ํธ์ถ๋๋ค. DOM์ ํ์ฌ ์ํ(์: ์คํฌ๋กค ์์น)๋ฅผ ์บก์ฒํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- componentDidUpdate(): ์ปดํฌ๋ํธ ์ ๋ฐ์ดํธ๊ฐ ๋๋ ํ ํธ์ถ๋๋ค. ์ด์ props์ state๋ฅผ ๋น๊ตํ์ฌ ์ถ๊ฐ์ ์ธ ์์ ์ ์ํํ ์ ์๋ค.
** UNSAFE_componentWillUpdate(), UNSAFE_componentWillReceiveProps()๋ ์ด์ ์ฌ์ฉํ๋ฉด ์ ๋๋ค. (๋ง์ฐฌ๊ฐ์ง๋ก rename-unsafe-lifecycles codemod๋ก ์ปดํฌ๋ํธ๋ฅผ ์ต์ ๋ฌธ๋ฒ์ผ๋ก ์๋ ๊ฐฑ์ ์ํฌ ์ ์๋ค.)
3. ์ธ๋ง์ดํ (Unmounting)
์ปดํฌ๋ํธ๊ฐ DOM์์ ์ ๊ฑฐ๋๋ ๋จ๊ณ์ด๋ค. ์ด ๋จ๊ณ์์๋ ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์์ ์ฌ๋ผ์ง๊ฒ ๋๋ค. ์ด ๋จ๊ณ์์๋ ๋ค์ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
- componentWillUnmount(): ์ปดํฌ๋ํธ๊ฐ DOM์์ ์ ๊ฑฐ๋๊ธฐ ์ง์ ์ ํธ์ถ๋๋ค. ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ ๊ฑฐ, ํ์ด๋จธ ํด์ ๋ฑ์ ์ ๋ฆฌ ์์ ์ ์ํํ๋ค.
์ถ์ฒ & ๋ ๋ง์ ์ ๋ณด๋ ์๋์ ๊ณต์ ๋ฌธ์์์ ์ฐพ์ ์ ์๋ค.
React.Component โ React
A JavaScript library for building user interfaces
ko.legacy.reactjs.org