LifeCycle Method
LifeCycle Method λ νκ΅μ΄λ‘ "μλͺ μ£ΌκΈ° λ©μλ" λΌκ³ λΆλ₯Έλ€. μλͺ μ£ΌκΈ° λ©μλλ μ»΄ν¬λνΈκ° λΈλΌμ°μ μμ λνλκ³ , μ λ°μ΄νΈλκ³ , μ¬λΌμ§κ² λ λ νΈμΆλλ λ©μλλ€ μ΄λ€. μΆκ°μ μΌλ‘ μ»΄ν¬λνΈμμ μλ¬κ° λ¬μ λ νΈμΆλλ λ©μλλ μλ€.
μλͺ μ£ΌκΈ° λ©μλλ ν΄λμ€ν μ»΄ν¬λνΈμμλ§ μ¬μ© ν μ μλ€.
render( ) ν¨μ
μ»΄ν¬λνΈ λͺ¨μμλ₯Ό μ μ, μ»΄ν¬λνΈμμ κ°μ₯ μ€μν λ©μλ, λΌμ΄νμ¬μ΄ν΄ λ©μλ μ€ μ μΌν νμ λ©μλ
this.propsμ this.stateμ μ κ·Όν μ μμΌλ©°, 리μ‘νΈ μμλ₯Ό λ°ν
constructor λ©μλ
constructor(props) { ... }
μ΄κ²μ μ»΄ν¬λνΈμ μμ±μ λ©μλλ‘ μ»΄ν¬λνΈλ₯Ό λ§λ€ λ μ²μμΌλ‘ μ€ν, μ΄ λ©μλμμλ μ΄κΈ° stateλ₯Ό μ ν μ μμ
getDerivedStateFromProps λ©μλ
μ΄κ²μ 리μ‘νΈ v16.3 μ΄νμ μλ‘ λ§λ λΌμ΄νμ¬μ΄ν΄ λ©μλ, propsλ‘ λ°μ μ¨ κ°μ stateμ λκΈ°νμν€λ μ©λλ‘ μ¬μ©νλ©°, μ»΄ν¬λνΈκ° λ§μ΄νΈλ λμ μ λ°μ΄νΈλ λ νΈμΆ
static getDerivedStateFromProps(nextProps, prevState) {
if(nextProps.value != = prevState.value) { // 쑰건μ λ°λΌ νΉμ κ° λκΈ°ν
return { value: nextProps.value };
}
return null; // stateλ₯Ό λ³κ²½ν νμκ° μλ€λ©΄ nullμ λ°ν
componentDidMount λ©μλ
componentDidMount() { ... }
μ»΄ν¬λνΈλ₯Ό λ§λ€κ³ , 첫 λ λλ§μ λ€ λ§μΉ ν μ€ν μ΄ μμμ λ€λ₯Έ μλ°μ€ν¬λ¦½νΈ λΌμ΄λΈλ¬λ¦¬ λλ νλ μμν¬μ ν¨μλ₯Ό νΈμΆνκ±°λ μ΄λ²€νΈ λ±λ‘, setTimeout, setInterval, λ€νΈμν¬ μμ² κ°μ λΉλκΈ° μμ μ μ²λ¦¬νλ©΄ λ¨.
shouldComponentUpdate λ©μλ
shouldComponentUpdate(nextProps, nextState) { ... }
props λλ stateλ₯Ό λ³κ²½νμ λ, 리λ λλ§μ μμν μ§ μ¬λΆλ₯Ό μ§μ νλ λ©μλ, μ΄ λ©μλμμλ λ°λμ true κ° λλ false κ°μ λ°νν΄μΌ ν¨.
getSnapshotBeforeUpdate λ©μλ
renderμμ λ§λ€μ΄μ§ κ²°κ³Όλ¬Όμ΄ λΈλΌμ°μ μ μ€μ λ‘ λ°μλκΈ° μ§μ μ νΈμΆ , μ£Όλ‘ μ λ°μ΄νΈνκΈ° μ§μ μ κ°μ μ°Έκ³ ν μΌμ΄ μμ λ νμ©(μ: μ€ν¬λ‘€λ° μμΉ μ μ§).
getSnapshotBeforeUpdate(prevProps, prevState) {
if(prevState.array != = this.state.array) {
const { scrollTop, scrollHeight } = this.list
return { scrollTop, scrollHeight };
}
componentDidUpdate λ©μλ
componentDidUpdate(prevProps, prevState, snapshot) { ... }
리λ λλ§μ μλ£ν ν μ€ν, μ λ°μ΄νΈκ° λλ μ§νμ΄λ―λ‘, DOM κ΄λ ¨ μ²λ¦¬λ₯Ό ν΄λ 무방
componentWillUnmount λ©μλ
componentWillUnmount() { ... }
μ»΄ν¬λνΈλ₯Ό DOMμμ μ κ±°ν λ μ€ν
componentDidCatch λ©μλ
μ»΄ν¬λνΈ λ λλ§ λμ€μ μλ¬κ° λ°μνμ λ μ ν리μΌμ΄μ μ΄ λ¨Ήν΅μ΄ λμ§ μκ³ μ€λ₯ UIλ₯Ό λ³΄μ¬ μ€ μ μκ² ν΄ μ€
componentDidCatch(error, info) {
this.setState({
error: true
});
console.log({ error, info });
}
Hooks
Hooksλ 리μ‘νΈ v16.8μ μλ‘ λμ λ κΈ°λ₯μΌλ‘ ν¨μν μ»΄ν¬λνΈμμλ μν κ΄λ¦¬λ₯Ό ν μ μλ useState, λ λλ§ μ§ν μμ μ μ€μ νλ useEffect λ±μ κΈ°λ₯μ μ 곡νμ¬ κΈ°μ‘΄μ ν¨μν μ»΄ν¬λνΈμμ ν μ μμλ λ€μν μμ μ ν μ μκ² ν΄ μ€λ€.
useState
useStateλ κ°μ₯ κΈ°λ³Έμ μΈ Hookμ΄λ©°, ν¨μν μ»΄ν¬λνΈμμλ κ°λ³μ μΈ μνλ₯Ό μ§λ μ μκ² ν΄ μ€λ€. λ§μ½ ν¨μν μ»΄ν¬λνΈμμ μνλ₯Ό κ΄λ¦¬ν΄μΌ νλ€λ©΄ μ΄ Hookμ μ¬μ©νλ©΄ λλ€.
useEffect
useEffectλ 리μ‘νΈ μ»΄ν¬λνΈκ° λ λλ§λ λλ§λ€ νΉμ μμ μ μννλλ‘ μ€μ ν μ μλ Hookμ΄λ€. ν΄λμ€ν μ»΄ν¬λνΈμ componentDidMountμ componentDidUpdateλ₯Ό ν©μΉ ννλ‘ λ³΄μλ 무방νλ€.
useReducer
useReducerλ useStateλ³΄λ€ λ λ€μν μ»΄ν¬λνΈ μν©μ λ°λΌ λ€μν μνλ₯Ό λ€λ₯Έ κ°μΌλ‘ μ λ°μ΄νΈν΄ μ£Όκ³ μΆμ λ μ¬μ©νλ Hookμ΄λ€. 리λμλ νμ¬ μν, κ·Έλ¦¬κ³ μ λ°μ΄νΈλ₯Ό μν΄ νμν μ 보λ₯Ό λ΄μ μ‘μ (action) κ°μ μ λ¬λ°μ μλ‘μ΄ μνλ₯Ό λ°ννλ ν¨μμ΄λ€. 리λμ ν¨μμμ μλ‘μ΄ μνλ₯Ό λ§λ€ λλ λ°λμ λΆλ³μ±μ μ§μΌ μ£Όμ΄μΌ νλ€.
useMemo
useMemoλ₯Ό μ¬μ©νλ©΄ ν¨μν μ»΄ν¬λνΈ λ΄λΆμμ λ°μνλ μ°μ°μ μ΅μ νν μ μλ€.
useCallback
useCallbackμ useMemoμ μλΉν λΉμ·ν ν¨μμ΄λ€. μ£Όλ‘ λ λλ§ μ±λ₯μ μ΅μ νν΄μΌ νλ μν©μμ μ¬μ©νλλ°, μ΄ Hookμ μ¬μ©νλ©΄ μ΄λ²€νΈ νΈλ€λ¬ ν¨μλ₯Ό νμν λλ§ μμ±ν μ μλ€.
useRef
useRef Hookμ ν¨μν μ»΄ν¬λνΈμμ refλ₯Ό μ½κ² μ¬μ©ν μ μλλ‘ ν΄ μ€λ€.
μ΄μΈμ λ€λ₯Έ κ°λ°μκ° λ§λ λ€μν Hooks 리μ€νΈ
https://nikgraf.github.io/react-hooks/
Collection of React Hooks
nikgraf.github.io
컀μ€ν Hooks λ§λ€μ΄μ μ¬μ©κ°λ₯
μ¬λ¬ μ»΄ν¬λνΈμμ λΉμ·ν κΈ°λ₯μ 곡μ ν κ²½μ°, μ΄λ₯Ό μμ λ§μ HookμΌλ‘ μμ±νμ¬ λ‘μ§μ μ¬μ¬μ©ν μ μλ€.
μΆμ² λ° μ°Έκ³ μλ£
리μ‘νΈλ₯Ό λ€λ£¨λ κΈ°μ [κ°μ ν] - κΉλ―Όμ€
https://react.vlpt.us/basic/25-lifecycle.html
25. LifeCycle Method · GitBook
25. LifeCycle Method LifeCycle Method λ νκ΅μ΄λ‘ "μλͺ μ£ΌκΈ° λ©μλ" λΌκ³ λΆλ¦ λλ€. μλͺ μ£ΌκΈ° λ©μλλ μ»΄ν¬λνΈκ° λΈλΌμ°μ μμ λνλκ³ , μ λ°μ΄νΈλκ³ , μ¬λΌμ§κ² λ λ νΈμΆλλ λ©μλλ€ μ λλ€.
react.vlpt.us
'μ΄λ Έλ² μ΄μ μΊ ν > μ§μμκΈ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
첫 νμ μ νλ©° λλ μ (μ€μ€λ‘ μμ¬μ λ μ / 보μνκ³ μΆμ μ ) (0) | 2022.09.11 |
---|---|
5μ£Όμ°¨ κ³Όμ React μ¬ν μ£Όμ°¨ ν€μλ (0) | 2022.08.26 |
React DOM, μλ²λ¦¬μ€ (0) | 2022.08.18 |
JWT, API (0) | 2022.08.14 |
SPA λ°©μκ³Ό MPA λ°©μ (0) | 2022.08.13 |