UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【React】Error Boundry

UI の一部に JavaScript エラーがあってもアプリ全体が壊れてしまわないようにしたい

Reactではどうなっているのか調べたら、React 16 から“error boundary”というのが導入されていた

ja.reactjs.org

どういうものか調べてみた

error boundary

error boundary は自身の子コンポーネントツリーで発生した JavaScript エラーをキャッチし、エラーを記録し、クラッシュしたコンポーネントツリーの代わりにフォールバック用の UI を表示する React コンポーネント

error boundary は配下のツリー全体のレンダー中、ライフサイクルメソッド内、およびコンストラクタ内で発生したエラーをキャッチする

ただ、ドキュメントによると

クラスコンポーネントに、ライフサイクルメソッドの static getDerivedStateFromError()componentDidCatch() のいずれか(または両方)を定義すると、error boundary になる

とあり、クラスコンポーネント前提で説明がされていた

昨今、クラスコポーネントを使っていないので、関数コンポーネントで使えないかを調査したところ、同じことを考えている人がいた

kudolog.net

記事では react-error-boundar という Error Boundary を関数コンポーネントで扱えるラッパーを紹介している

やるとしたらこれを使うことになるのだろうが実際使用しているのだろうか(あんまり記事がない)

ただ、これまで気付かれていなかったアプリケーションの既存の不具合が明らかになるのと、問題が発生したときのユーザ体験を向上できるのはよいと思うので引き続き導入を検討する