@@ -13,6 +13,8 @@ import Store from 'react-devtools-shared/src/devtools/store';
1313import ErrorView from './ErrorView' ;
1414import SearchingGitHubIssues from './SearchingGitHubIssues' ;
1515import SuspendingErrorView from './SuspendingErrorView' ;
16+ import TimeoutView from './TimeoutView' ;
17+ import TimeoutError from 'react-devtools-shared/src/TimeoutError' ;
1618
1719type Props = { |
1820 children : React$Node ,
@@ -27,6 +29,7 @@ type State = {|
2729 componentStack : string | null ,
2830 errorMessage : string | null ,
2931 hasError : boolean ,
32+ isTimeout : boolean ,
3033| } ;
3134
3235const InitialState : State = {
@@ -35,6 +38,7 @@ const InitialState: State = {
3538 componentStack : null ,
3639 errorMessage : null ,
3740 hasError : false ,
41+ isTimeout : false ,
3842} ;
3943
4044export default class ErrorBoundary extends Component < Props , State > {
@@ -48,6 +52,8 @@ export default class ErrorBoundary extends Component<Props, State> {
4852 ? error . message
4953 : String ( error ) ;
5054
55+ const isTimeout = error instanceof TimeoutError ;
56+
5157 const callStack =
5258 typeof error === 'object' &&
5359 error !== null &&
@@ -62,6 +68,7 @@ export default class ErrorBoundary extends Component<Props, State> {
6268 callStack,
6369 errorMessage,
6470 hasError : true ,
71+ isTimeout,
6572 } ;
6673 }
6774
@@ -93,26 +100,40 @@ export default class ErrorBoundary extends Component<Props, State> {
93100 componentStack,
94101 errorMessage,
95102 hasError,
103+ isTimeout,
96104 } = this . state ;
97105
98106 if ( hasError ) {
99- return (
100- < ErrorView
101- callStack = { callStack }
102- componentStack = { componentStack }
103- dismissError = {
104- canDismissProp || canDismissState ? this . _dismissError : null
105- }
106- errorMessage = { errorMessage } >
107- < Suspense fallback = { < SearchingGitHubIssues /> } >
108- < SuspendingErrorView
109- callStack = { callStack }
110- componentStack = { componentStack }
111- errorMessage = { errorMessage }
112- />
113- </ Suspense >
114- </ ErrorView >
115- ) ;
107+ if ( isTimeout ) {
108+ return (
109+ < TimeoutView
110+ callStack = { callStack }
111+ componentStack = { componentStack }
112+ dismissError = {
113+ canDismissProp || canDismissState ? this . _dismissError : null
114+ }
115+ errorMessage = { errorMessage }
116+ />
117+ ) ;
118+ } else {
119+ return (
120+ < ErrorView
121+ callStack = { callStack }
122+ componentStack = { componentStack }
123+ dismissError = {
124+ canDismissProp || canDismissState ? this . _dismissError : null
125+ }
126+ errorMessage = { errorMessage } >
127+ < Suspense fallback = { < SearchingGitHubIssues /> } >
128+ < SuspendingErrorView
129+ callStack = { callStack }
130+ componentStack = { componentStack }
131+ errorMessage = { errorMessage }
132+ />
133+ </ Suspense >
134+ </ ErrorView >
135+ ) ;
136+ }
116137 }
117138
118139 return children ;
0 commit comments