
μλ¬ κ²½κ³ (Error Boundary)
- React μ ν리μΌμ΄μ μμ μ»΄ν¬λνΈ νΈλ¦¬ νμμμ λ°μν μλ¬λ₯Ό μ²λ¦¬ λ°©λ²μ μ 곡νλ μ»΄ν¬λνΈμ΄λ€.
- μ ν리μΌμ΄μ μ νΉμ λΆλΆμμ λ°μν μλ¬λ₯Ό λΆλͺ¨ μ»΄ν¬λνΈμμ μ²λ¦¬ν μ μλλ‘ νλ€.
- μ ν리μΌμ΄μ μ΅μμμμ μ¬μ©λλ€.
- νμμ λ°λΌ μ¬λ¬ κ°μ μλ¬ κ²½κ³λ₯Ό μ€μ²©ν΄μ μ¬μ©ν μ μμΌλ©°, μ¬λ¬ μλ¬λ₯Ό λ 립μ μΌλ‘ μ²λ¦¬ ν μ μλ€.
- μ ν리μΌμ΄μ μΌλΆμμ λ°μν μλ¬λ‘ μ 체 μ ν리μΌμ΄μ μ λ λλ§μ΄ μ€λ¨λλ κ²μ λ°©μ§ ν μ μλ€.
- static getDerivedStateFromError()
- μμ μ»΄ν¬λνΈμμ μλ¬κ° λ°μνμ λ νΈμΆ λλ μ μ λ©μλμ΄λ€.
- μλ¬ μνλ₯Ό μ»΄ν¬λνΈμ λ°μν μ μλ€.
- componentDidCatch()
- μλͺ μ£ΌκΈ° λ©μλ μ€ νλ
- μμ μ»΄ν¬λνΈμμ μλ¬κ° λ°μνμ λ νΈμΆλλ λ©μλμ΄λ€.
- μλ¬ μ 보 μμ§, λ‘κΉ λ±μ μμ μ μνν μ μλ€.
import React, { Component } from 'react';
class ErrorBoundary extends Component {
constructor(props) {
super(props);
this.state = {
hasError: false,
error: null,
errorInfo: null,
};
}
static getDerivedStateFromError(error) {
// μλ¬κ° λ°μνλ©΄ μλ¬ μνλ₯Ό μ
λ°μ΄νΈ
return {
hasError: true,
error: error,
};
}
componentDidCatch(error, errorInfo) {
// μλ¬ μ 보λ₯Ό λ‘κΉ
νκ±°λ λ€λ₯Έ μμ
μ μν
console.error('Error caught by componentDidCatch:', error, errorInfo);
this.setState({
errorInfo: errorInfo,
});
}
render() {
if (this.state.hasError) {
return (
<div>
<h1>Something went wrong!</h1>
<p>{this.state.error && this.state.error.toString()}</p>
</div>
);
}
return this.props.children;
}
}
export default ErrorBoundary;
import React, { Component } from 'react';
class MyComponent extends Component {
render() {
// μλμ μΌλ‘ μλ¬λ₯Ό λ°μ
throw new Error('This is an intentional error.');
return <p>This component has an error.</p>;
}
}
export default MyComponent;
import React, { Component } from 'react';
import ErrorBoundary from './ErrorBoundary';
import MyComponent from './MyComponent';
class App extends Component {
render() {
return (
<ErrorBoundary>
<MyComponent/>
</ErrorBoundary>
);
}
}
export default App;
[ μ½λ μ€ν Result ]
- MyComponentμμ λ°μν μλ¬κ° ErrorBoundaryμμ μ²λ¦¬ λλ€.
- νλ©΄μλ "Something went wrong!" κ³Ό ν¨κ» μλ¬ λ©μΈμ§κ° νμ λλ€.
λ°μν
'Frontend > React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
React | λ λλ§ μ£ΌκΈ° - μ κ±° λ¨κ³ (Unmounting) (0) | 2023.12.04 |
---|---|
React | λ λλ§ μ£ΌκΈ° - μ λ°μ΄νΈ λ¨κ³ (Updating) (0) | 2023.12.01 |
React | λ λλ§ μ£ΌκΈ° - μμ± λ¨κ³ (Mounting) (1) | 2023.11.30 |
React | λ λλ§ μ£ΌκΈ° (2) | 2023.11.29 |
React | μλͺ μ£ΌκΈ° λ©μλ(Lifecyle Methods) (0) | 2023.11.28 |