π₯ μ€λ μ΄λμ λμ ν΄λ³΄μ ¨κ³ , 무μμ λ°°μ°μ ¨λμ?
π νμ΅νμλ©΄μ κΆκΈνμ λΆλΆμ΄λ, μ΄λ €μ λ μ μ λκΉμ?
componentDidCatch
μμ setStateλ‘ μνλ₯Ό μ λ°μ΄νΈνκ³ μλ¬ λ°μ μ λ체 UI λ λλ§μ μ μ΄ν μ μμ§λ§ μ΄λ° λ°©μμ μ΄νμ 릴리μ¦μμλ μ¬μ©ν μ μκ² λ κ²μ΄λ―λ‘static getDerivedStateFromError()
λ₯Ό λμ μ¬μ©νμ¬μΌ νλ€π μ°Έκ³ μλ¬ κ²½κ³(Error Boundaries))
ν΄λμ€ μ»΄ν¬λνΈ μλ¬ κ²½κ³(Error Boundaries)
- π μλ°μ€ν¬λ¦½νΈμμ μλ¬ μ²λ¦¬λ try-catchλ₯Ό μ¬μ©νλ©΄ λλλ° λ¦¬μ‘νΈμ JSX λ¬Έλ²μμλ μ¬μ©ν μ μλ€.
- π μλ¬ κ²½κ³λ νμ μ»΄ν¬λνΈ μ€ νλκ° μ€λ₯λ₯Ό λ§λ€κ±°λ μ λ¬ν λ λ°λνλ€.
- π μλ¬λ λ λλ§ λμ€ μλͺ μ£ΌκΈ° λ©μλ λ° κ·Έ μλμ μλ μ 체 νΈλ¦¬μμ μ‘μλΈλ€.
- π μλ¬ κ²½κ³λ₯Ό μ¬μ©νλ μ΄μ λ μλ¬κ° λ°μνλλΌλ μ ν리μΌμ΄μ μ 체μ μλμ΄ μ€λ¨λμ§ μκ³ μ€λ₯λ₯Ό μ²λ¦¬νκΈ° μν΄μλ€.
- π ν¨μν μ»΄ν¬λνΈμμλ μμ§ μ¬μ©μ΄ λΆκ°νμ¬ ν΄λμ€ μ»΄ν¬λνΈλ₯Ό μ¬μ©ν΄μΌ νλ€.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = {
hasError: false,
};
}
componentDidCatch(error) {
this.setState({ hasError: true });
}
render() {
return this.state.hasError ? (
<p>Something went wrong.</p>
) : (
this.props.children
);
}
}
export default ErrorBoundary;
π JEJU.log
β° λ¨μκ°μ κ³ κ°λ μ΄λμ μνλ€λ©΄ μ±μ°μΌμΆλ΄ μ¬λΌκ°κΈ°
μμμμ μ±μ°κΉμ§ κ°λ κΈΈμ΄ λ무 κ³ λμλ€. λ²μ€λ₯Ό λ λ²μ΄λ λμ³μ ν μκ°μ λ λ Έκ³ μ±μ° λμ°©κΉμ§ νμκ° λ° μ λκ° κ±Έλ Έλ€. λμ°©ν΄μ μ±μ° μΌμΆλ΄μ 보λλ° κ°νμ΄ λμ€κΈ΄ νλ€. μ¬μ§μΌλ‘ λ³Έ κ²λ³΄λ€ ν¬κ³ μ뻀λ€. μ μκΉμ§ μ¬λΌκ°λ κΈΈμ μκ°λ³΄λ€ νλ€κ±°λΌλ μ‘°μΈλλ‘ μ§§μ§λ§ κ°ν μ½μ€μλ€. μμ¬μ΄κ±΄ μ μμμ μ°μ μ¬μ§μ μ€λ¬Όμ μ ν λ΄μ§ λͺ»νλ€γ γ 그건 λμΌλ‘ λ΄μΌνλ€.