เจ เจธเฉเจ Sentry with React เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจชเฉเจเฉเจฒ เจเจฐ เจฐเจนเฉ เจนเจพเจเฅค
เจเจน เจฒเฉเจ เจเฉฑเจ เจเจฆเจพเจนเจฐเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจธเฉฐเจคเจฐเฉ เจเจฒเจคเฉเจเจ เจฆเฉ เจฐเจฟเจชเฉเจฐเจ เจเจฐเจจ เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจนเฉเจฃ เจตเจพเจฒเฉ เจฒเฉเฉ เจฆเจพ เจนเจฟเฉฑเจธเจพ เจนเฉ:
เจชเฉเจฐเจคเฉเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจเจพ
เจชเจนเจฟเจฒเจพเจ เจธเจพเจจเฉเฉฐ เจเจธ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฒเจ เจเฉฑเจ เจจเจตเจพเจ เจธเฉฐเจคเจฐเฉ เจชเฉเจฐเฉเจเฉเจเจ เจเฉเฉเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ; เจธเฉฐเจคเจฐเฉ เจตเฉเจฌเจธเจพเจเจ เจคเฉเจ. เจเจธ เจเฉเจธ เจตเจฟเฉฑเจ เจ เจธเฉเจ React เจจเฉเฉฐ เจเฉเจฃเจฆเฉ เจนเจพเจเฅค
เจ เจธเฉเจ เจเจชเจฃเฉ เจฆเฉ เจฌเจเจจเจพเจ, เจนเฉเจฒเฉ เจ เจคเฉ เจเจฐเจฐ เจจเฉเฉฐ เจฐเฉเจเจเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจตเจฟเฉฑเจ เจฆเฉเจฌเจพเจฐเจพ เจฒเจพเจเฉ เจเจฐเจพเจเจเฉเฅค เจ เจธเฉเจ เจเจชเจฃเฉ เจธเจเจพเจฐเจเจฐ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฌเจฃเจพ เจเฉ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเจพเจ:
npx create-react-app react-app
เจซเจฟเจฐ เจ เจธเฉเจ เจธเฉฐเจคเจฐเฉ เจชเฉเจเฉเจ เจจเฉเฉฐ เจเจฏเจพเจค เจเจฐเจฆเฉ เจนเจพเจ:
yarn add @sentry/browser
เจ เจคเฉ เจเจธเจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเฉ:
react-app/src/index.js
...
import * as Sentry from '@sentry/browser';
const RELEASE = '0.1.0';
if (process.env.NODE_ENV === 'production') {
Sentry.init({
dsn: 'https://[email protected]/1289887',
release: RELEASE,
});
}
...
เจจเจฟเจฐเฉเจเจฃ:
- เจตเจฟเจเจพเจธ เจฆเฉ เจฆเฉเจฐเจพเจจ, เจธเจพเจกเฉ เจเฉเจฒ เจฎเฉเฉฑเจฆเจฟเจเจ เจฆเฉ เจจเจฟเจเจฐเจพเจจเฉ เจเจฐเจจ เจฒเจ เจนเฉเจฐ เจตเจฟเจงเฉเจเจ เจนเจจ, เจเจฟเจตเฉเจ เจเจฟ เจเฉฐเจธเฉเจฒ, เจเจธเจฒเจ เจ เจธเฉเจ เจธเจฟเจฐเจซ เจเจคเจชเจพเจฆเจจ เจฌเจฟเจฒเจกเจพเจ เจฒเจ เจธเฉฐเจคเจฐเฉ เจจเฉเฉฐ เจธเจฎเจฐเฉฑเจฅ เจเจฐเจฆเฉ เจนเจพเจ
เจ เฉฑเจเฉ เจ เจธเฉเจ เจเจชเจฃเฉ เจนเฉเจฒเฉ เจ เจคเฉ เจเจฐเจฐ เจฌเจเจจเจพเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจตเจฟเฉฑเจ เจเฉเฉเจฆเฉ เจนเจพเจ:
react-app/src/Hello.js
import React, { Component } from 'react';
import * as Sentry from '@sentry/browser';
export default class Hello extends Component {
state = {
text: '',
};
render() {
const { text } = this.state;
return (
<div>
<button
onClick={this.handleClick}
>
Hello
</button>
<div>{text}</div>
</div>
)
}
handleClick = () => {
this.setState({
text: 'Hello World',
});
try {
throw new Error('Caught');
} catch (err) {
if (process.env.NODE_ENV !== 'production') {
return;
}
Sentry.captureException(err);
}
}
}
react-app/src/MyError.js
import React, { Component } from 'react';
export default class MyError extends Component {
render() {
return (
<div>
<button
onClick={this.handleClick}
>
Error
</button>
</div>
)
}
handleClick = () => {
throw new Error('Uncaught');
}
}
react-app/src/App.js
...
import Hello from './Hello';
import MyError from './MyError';
class App extends Component {
render() {
return (
<div className="App">
...
<Hello />
<MyError />
</div>
);
}
}
export default App;
เจธเจฎเฉฑเจธเจฟเจ (เจธเจฐเฉเจค เจจเจเจธเจผเฉ)
เจ เจธเฉเจ เจฆเจฐเจ เจเจฐเจเฉ เจเจคเจชเจพเจฆเจจ เจฌเจฟเจฒเจก เจจเจพเจฒ เจธเฉฐเจคเจฐเฉ เจฆเฉ เจเจพเจเจ เจเจฐ เจธเจเจฆเฉ เจนเจพเจ:
yarn build
เจ เจคเฉ เจฌเจฟเจฒเจก เจซเฉเจฒเจกเจฐ เจคเฉเจ เจฆเจฐเจ เจเจฐเฉ:
npx http-server -c-1
เจเจฟเจธ เจธเจฎเฉฑเจธเจฟเจ เจฆเจพ เจ เจธเฉเจ เจคเฉเจฐเฉฐเจค เจธเจพเจนเจฎเจฃเจพ เจเจฐเจฆเฉ เจนเจพเจ เจเจน เจเจน เจนเฉ เจเจฟ เจธเฉฐเจคเจฐเฉ เจฆเฉ เจเจฒเจคเฉ เจฐเจฟเจเจพเจฐเจก เจฎเจฟเจจเฉเจซเจพเจเจก เจฌเฉเจ เจตเจฟเฉฑเจ เจฒเจพเจเจจ เจจเฉฐเจฌเจฐเจพเจ เจฆเจพ เจนเจตเจพเจฒเจพ เจฆเจฟเฉฐเจฆเฉ เจนเจจ; เจฌเจนเฉเจค เจฒเจพเจญเจฆเจพเจเจ เจจเจนเฉเจ เจนเฉเฅค
เจธเฉฐเจคเจฐเฉ เจธเฉเจตเจพ เจเฉฑเจ เจเจฒเจคเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ เจเจเจพเจ เจเจ เจชเฉเจเฉเจ เจฒเจ เจธเจฐเฉเจค เจจเจเจธเจผเฉ เจเจฟเฉฑเจ เจเฉ เจเจธเจฆเฉ เจตเจฟเจเจเจฟเจ เจเจฐเจฆเฉ เจนเฉเฅค เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจฒเฉเจเจฒเจนเฉเจธเจ เจคเฉเจ เจเฉฑเจฒ เจฐเจนเฉ เจนเจพเจ (เจธเฉเจเจเจฐเฉ เจธเฉเจตเจพ เจฆเฉเจเจฐเจพ เจชเจนเฉเฉฐเจเจฏเฉเจ เจจเจนเฉเจ)เฅค
เจนเฉฑเจฒ (เจธเจฐเฉเจค เจจเจเจธเจผเฉ)
เจเจธ เจธเจฎเฉฑเจธเจฟเจ เจฆเจพ เจนเฉฑเจฒ เจเฉฑเจ เจเจจเจคเจ เจตเฉเฉฑเจฌ เจธเจฐเจตเจฐ เจคเฉเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจเจฒเจพเจเจฃเจพ เจนเฉเฅค GitHub เจชเฉฐเจจเฉ เจธเฉเจตเจพ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจธเจงเจพเจฐเจจ เจเจตเจพเจฌ เจฌเจเจจ (เจฎเฉเจซเจผเจค)เฅค เจตเจฐเจคเจฃ เจฒเจ เจเจฆเจฎ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจนเฉเจ เจฒเจฟเจเฉ เจ เจจเฉเจธเจพเจฐ เจนเจจ:
-
เจซเฉเจฒเจกเจฐ เจฆเฉเจเจ เจธเจฎเฉฑเจเจฐเฉเจเจ เจฆเฉ เจจเจเจฒ เจเจฐเฉ เจจเฉเฉฐ เจฌเจฃเจพเจเจฃ เจซเฉเจฒเจกเจฐ เจตเจฟเฉฑเจ เจฆเจธเจคเจพเจตเฉเจเจผ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจฆเฉ เจฐเฉเจ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจตเจฟเฉฑเจเฅค
-
เจเจพเจฒเฉ เจเจฐเฉ เจเจฟเฉฑเจเจนเจฌ เจชเฉเจ เจตเจฟเฉฑเจ เจกเฉเจเจธ เจซเฉเจฒเจกเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฒเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ (GitHub เจคเฉเจ) เจตเจฟเฉฑเจ เจฎเจพเจธเจเจฐ เจธเจผเจพเจเจพเจตเจพเจ
-
GitHub เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจชเฉเจธเจผ เจเจฐเฉ
เจเจฟเฉฑเจชเจฃเฉ: เจฎเฉเจจเฉเฉฐ เจเจน เจชเจคเจพ เจฒเฉฑเจเจฃ เจคเฉเจ เจฌเจพเจ เจฆ เจเจฟ เจฎเฉเจจเฉเฉฐ เจเฉ เจตเจฐเจคเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ เจฌเจฃเจพเจ-เจฌเจฃเจพเจ-เจเจช เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจฒเจพเจเจ เจเจฐเจจ เจฒเจ เจนเฉเจฎ เจชเฉเจ เจซเฉฐเจเจธเจผเจจ. เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจจเฉเฉฐ package.json เจตเจฟเฉฑเจ เจเฉเฉเจจ เจฒเจ เจนเฉเจ เจพเจ เจเจเจ:
"homepage": "https://larkintuckerllc.github.io/hello-sentry/"
เจเฉฑเจฒ เจฐเจนเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฆเจพ เจ เฉฐเจคเจฎ เจธเฉฐเจธเจเจฐเจฃ เจเฉฑเจฅเฉ เจเจชเจฒเจฌเจง เจนเฉ:
เจซเฉเฉ เจเจ เจฌเฉฑเจเจพเจ เจฆเจพ เจเจฆเจพเจนเจฐเจจ
เจเจ เจนเฉเจฒเฉ เจฌเจเจจ เจคเฉ เจเจฒเจฟเจ เจเจฐเจเฉ เจเฉฑเจฒเฉเจเฅค
เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเฉเจฃ เจตเจพเจฒเฉ เจเฉฑเจ เจเจฒเจคเฉ เจฆเฉ เจจเจพเจฒ:
เจจเจฟเจฐเฉเจเจฃ:
- เจเจน เจฌเฉฑเจ เจฐเจฟเจชเฉเจฐเจ เจธเจชเฉฑเจธเจผเจ เจจเจนเฉเจ เจนเฉ เจธเจเฉ, เจฌเจฐเจพเจตเฉ.
เจเจฒเจคเฉเจเจ เจฒเจ เจฌเฉ-เจนเจฟเจธเจพเจฌ เจฆเจพ เจเจฆเจพเจนเจฐเจจ
เจเจธเฉ เจคเจฐเฉเจนเจพเจ, เจเจ เจฌเจเจจ เจเจฒเจฟเฉฑเจ เจฐเจพเจนเฉเจ เจเจพเจฃเฉเจ เจเจฒเจคเฉ เจนเฉ.
เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเฉเจฃ เจตเจพเจฒเฉ เจเฉฑเจ เจเจฒเจคเฉ เจฆเฉ เจจเจพเจฒ:
เจฌเฉเจนเจฟเจธเจพเจฌ เจเจฒเจคเฉเจเจ เจฆเจพ เจฌเจฟเจนเจคเจฐ เจชเฉเจฐเจฌเฉฐเจงเจจ (เจฐเฉเจเจกเจฐเจฟเฉฐเจ)
เจเจฒเจคเฉ เจธเฉเจฎเจพเจตเจพเจ เจฆเฉ เจเจพเจฃ-เจชเจเจพเจฃ
เจฏเฉเจเจผเจฐ เจเฉฐเจเจฐเจซเฉเจธ เจฆเฉ เจนเจฟเฉฑเจธเฉ เจตเจฟเฉฑเจ เจเฉฑเจ JavaScript เจเจฒเจคเฉ เจจเฉเฉฐ เจชเฉเจฐเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจจเจนเฉเจ เจคเฉเฉเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค React เจเจชเจญเฉเจเจคเจพเจตเจพเจ เจฒเจ เจเจธ เจธเจฎเฉฑเจธเจฟเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ, React 16 เจเฉฑเจ เจจเจตเจพเจ เจธเฉฐเจเจฒเจช เจชเฉเจธเจผ เจเจฐเจฆเจพ เจนเฉ เจเจฟเจธเจจเฉเฉฐ "error bounds" เจเจฟเจนเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
เจเจฒเจคเฉ เจธเฉเจฎเจพเจตเจพเจ เจเจน เจชเฉเจฐเจคเฉเจเจฟเจฐเจฟเจ เจตเจพเจฒเฉ เจญเจพเจ เจนเจจ เจเฉ เจเจชเจฃเฉ เจเจพเจเจฒเจก เจเฉฐเจชเฉเจจเฉเจเจ เจเฉเจฐเฉ เจตเจฟเฉฑเจ เจเจฟเจคเฉ เจตเฉ JavaScript เจเจฒเจคเฉเจเจ เจจเฉเฉฐ เจซเฉเจฆเฉ เจนเจจ, เจเจนเจจเจพเจ เจคเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจฒเฉเจ เจเจฐเจฆเฉ เจนเจจ, เจ เจคเฉ เจเฉเจฐเฉเจธเจผ เจนเฉเจ เจเฉฐเจชเฉเจจเฉเจเจ เจเฉเจฐเฉ เจฆเฉ เจฌเจเจพเจ เจเฉฑเจ เจซเจพเจฒเจฌเฉเจ UI เจฐเฉเจเจกเจฐ เจเจฐเจฆเฉ เจนเจจเฅค เจเจฒเจคเฉ เจธเฉเจฎเจพเจตเจพเจ เจฐเฉเจเจกเจฐเจฟเฉฐเจ เจฆเฉเจฐเจพเจจ, เจเฉเจตเจจ-เจเฉฑเจเจฐ เจฆเฉ เจคเจฐเฉเจเจฟเจเจ เจตเจฟเฉฑเจ, เจ เจคเฉ เจเจนเจจเจพเจ เจฆเฉ เจนเฉเจ เจพเจ เจชเฉเจฐเฉ เจฐเฉเฉฑเจ เจฆเฉ เจจเจฟเจฐเจฎเจพเจคเจพเจตเจพเจ เจตเจฟเฉฑเจ เจเจฒเจคเฉเจเจ เจจเฉเฉฐ เจซเฉเจฆเฉเจเจ เจนเจจเฅค
...
เจ เจฃเจกเจฟเฉฑเจ เฉเจเจ เจเจฒเจคเฉเจเจ เจฒเจ เจจเจตเจพเจ เจตเจฟเจตเจนเจพเจฐ
เจเจน เจคเจฌเจฆเฉเจฒเฉ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉเฅค เจฐเฉเจเจเจ 16 เจฆเฉ เจ เจจเฉเจธเจพเจฐ, เจเจฒเจคเฉเจเจ เจเฉ เจเจฟเจธเฉ เจตเฉ เจเจฒเจคเฉ เจธเฉเจฎเจพ เจฆเฉเจเจฐเจพ เจจเจนเฉเจ เจซเฉเฉเจเจ เจเจเจเจ เจธเจจ, เจจเจคเฉเจเฉ เจตเจเฉเจ เจชเฉเจฐเฉ เจชเฉเจฐเจคเฉเจเจฟเจฐเจฟเจ เจเฉฐเจชเฉเจจเฉเจเจ เจเฉเจฐเฉ เจจเฉเฉฐ เจ เจจเจฎเจพเจเจเจ เจเฉเจคเจพ เจเจพเจตเฉเจเจพเฅค
- เจกเฉเจจ เจ เจฌเจฐเจพเจฎเฉเจต -
เจชเฉเจฐเจคเฉเจเจฟเจฐเจฟเจ 16 เจตเจฟเฉฑเจ เจเจฒเจคเฉ เจจเฉเฉฐ เจธเฉฐเจญเจพเจฒเจฃเจพ
เจเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจฃ เจธเจชเฉฑเจธเจผเจเฉเจเจฐเจจ เจเจฟเจธเจจเฉ เจฎเฉเจจเฉเฉฐ เจเจน เจฎเจนเจฟเจธเฉเจธ เจเจฐเจจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเฉเจ เจธเจฎเจพเจ เจฒเจฟเจ เจเจน เจนเฉ เจเจชเจฐเฉเจเจค เจตเจฟเจตเจนเจพเจฐ เจธเจฟเจฐเจซ เจฐเฉเจเจกเจฐ เจตเจฟเจงเฉ เจตเจฟเฉฑเจ เจธเฉเฉฑเจเฉเจเจ เจเจเจเจ เจเจฒเจคเฉเจเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ (เจเจพเจ เจเฉเจตเจจ เจเฉฑเจเจฐ เจฆเฉ เจเจฟเจธเฉ เจตเฉ เจคเจฐเฉเจเจฟเจเจ เจตเจฟเฉฑเจ เจตเจงเฉเจฐเฉ เจธเฉฐเจญเจพเจตเจจเจพ). เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเจฒเจคเฉ เจธเฉเจฎเจพเจตเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจธเจพเจกเฉ เจฌเจเจจ เจจเจพเจฒ เจเฉเจ เจเฉฐเจเจพ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐเฉเจเจพ เจเจฒเจคเฉ เจนเฉ; เจเจน เจเจฒเจคเฉ เจเจฒเจฟเฉฑเจ เจนเฉเจเจกเจฒเจฐ เจตเจฟเฉฑเจ เจธเฉเฅค
เจเจฒเฉ เจเฉฑเจ เจเจฆเจพเจนเจฐเจจ เจฐเฉเจเจกเจฐเจฟเฉฐเจ เจเจฐเจฐ เจฌเจฃเจพเจเจ เจ เจคเฉ เจซเจฟเจฐ เจเจฒเจคเฉ เจจเฉเฉฐ เจนเฉเจฐ เจตเจงเฉเจ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจธเฉฐเจญเจพเจฒเจฃ เจฒเจ เจเจฒเจคเฉ เจธเฉเจฎเจพเจตเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉเจเฅค
react-app/src/MyRenderError
import React, { Component } from 'react';
export default class MyRenderError extends Component {
state = {
flag: false,
};
render() {
const { flag } = this.state;
return (
<div>
<button
onClick={this.handleClick}
>
Render Error
</button>
{ flag && <div>{flag.busted.bogus}</div> }
</div>
)
}
handleClick = () => {
this.setState({
flag: true,
});
}
}
เจจเจฟเจฐเฉเจเจฃ:
-
เจเจฆเฉเจ เจคเฉเจธเฉเจ เจฌเจเจจ เจฆเจฌเจพเจเจเจฆเฉ เจนเฉ, เจชเฉเจฐเจคเฉเจเจฟเจฐเจฟเจ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเฉเจคเจพ เจเจพเจตเฉเจเจพ flag.busted.bogus, เจเฉ เจเฉฑเจ เจคเจฐเฉเฉฑเจเฉ เจชเฉเจฆเจพ เจเจฐเจฆเจพ เจนเฉ
-
เจเฉฑเจ เจเจฒเจคเฉ เจธเฉเจฎเจพ เจฆเฉ เจฌเจฟเจจเจพเจ, เจชเฉเจฐเฉ เจเฉฐเจชเฉเจจเฉเจเจ เจเฉเจฐเฉ เจจเฉเฉฐ เจ เจจเจฎเจพเจเจเจ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ
เจซเจฟเจฐ เจ เจธเฉเจ เจเจชเจฃเจพ เจเจฒเจคเฉ เจธเฉเจฎเจพ เจเฉเจก เจฒเจฟเจเจฆเฉ เจนเจพเจ (เจจเจตเฉเจ เจเฉเจตเจจ เจเฉฑเจเจฐ เจตเจฟเจงเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเฉ componentDidCatch); เจเจน เจ เจธเจฒ เจตเจฟเฉฑเจ เจกเฉเจจ เจ เจฌเจฐเจพเจฎเฉเจต เจฆเฉ เจฒเฉเจ เจตเจฟเฉฑเจ เจฆเจฟเฉฑเจคเฉ เจเจ เจเจฆเจพเจนเจฐเจฃ เจนเฉ:
react-app/src/ErrorBoundary.js
import React, { Component } from 'react';
import * as Sentry from '@sentry/browser';
export default class ErrorBoundary extends Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
componentDidCatch(err, info) {
this.setState({ hasError: true });
Sentry.captureException(err);
}
render() {
if (this.state.hasError) {
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
}
เจ เฉฐเจค เจตเจฟเฉฑเจ เจ เจธเฉเจ เจเจธ เจญเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเจพเจ:
react-app/src/App.js
...
import MyRenderError from './MyRenderError';
class App extends Component {
render() {
return (
<ErrorBoundary>
<div className="App">
...
</div>
</ErrorBoundary>
);
}
}
...
เจนเจพเจฒเจพเจเจเจฟ, เจฐเฉเจเจกเจฐ เจเจฐเจฐ เจฌเจเจจ เจจเฉเฉฐ เจฆเจฌเจพเจเจฃ เจจเจพเจฒ เจซเจพเจฒเจฌเฉเจ UI เจฆเจฟเจเจพเจเจเจฆเจพ เจนเฉ เจ เจคเฉ เจธเฉฐเจคเจฐเฉ เจจเฉเฉฐ เจเฉฑเจ เจเจฒเจคเฉ เจฆเฉ เจฐเจฟเจชเฉเจฐเจ เจเจฐเจฆเจพ เจนเฉเฅค
เจชเฉเจฐเจพ เจเจฐเจจเจพ
เจฎเฉเจจเฉเฉฐ เจเจฎเฉเจฆ เจนเฉ เจเจฟ เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจฎเจฆเจฆเจเจพเจฐ เจฒเฉฑเจเจฟเจเฅค
PS
เจธเฉฐเจคเจฐเฉ เจฆเฉเจเจฐเจพ PS เจเฉเจฒเฉเจเฉเจฐเจพเจฎ เจเฉเจ
เจธเจฐเฉเจค: www.habr.com