Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //class ErrorBoundary
  2. import React from 'react';
  3. import PropTypes from 'prop-types';
  4.  
  5. class ErrorBoundary extends React.Component {
  6.   constructor(props) {
  7.     super(props);
  8.     this.state = { error: null, errorInfo: null };
  9.   }
  10.  
  11.   componentDidCatch(error, errorInfo) {
  12.     this.setState({
  13.       error,
  14.       errorInfo,
  15.     });
  16.   }
  17.  
  18.   render() {
  19.     if (this.state.errorInfo) {
  20.       return (
  21.         <div>
  22.           something here
  23.         </div>
  24.       );
  25.     }
  26.     return this.props.children;
  27.   }
  28. }
  29.  
  30. ErrorBoundary.propTypes = {
  31.   children: PropTypes.node,
  32. };
  33. export default ErrorBoundary;
  34.  
  35. // class ErrorClass not working
  36. import React from 'react';
  37. import PropTypes from 'prop-types';
  38.  
  39. class ErrorClass extends React.Component {
  40.   constructor(props) {
  41.     super(props);
  42.     this.renderSomethingSpecific = this.renderSomethingSpecific.bind(this);
  43.   }
  44.  
  45. renderSomethingSpecific(prop) {
  46.   throw new Error('test');
  47. }
  48.  
  49.   render() {
  50.    return (
  51.      <div>
  52.          <div>Some text to always display</div>
  53.          <ErrorBoundary>
  54.             {this.renderSomethingSpecific();}
  55.          </ErrorBoundary>
  56.      </div>
  57.   )
  58. }
  59.  
  60. ErrorBoundary.propTypes = {
  61.   children: PropTypes.node,
  62. };
  63. export default ErrorBoundary;
  64.  
  65. // class ErrorClass which is working
  66. import React from 'react';
  67. import PropTypes from 'prop-types';
  68.  
  69. class ErrorClass extends React.Component {
  70.   constructor(props) {
  71.     super(props);
  72.     this.renderSomethingSpecific = this.renderSomethingSpecific.bind(this);
  73.   }
  74.  
  75.   render() {
  76.    return (
  77.      <div>
  78.          <div>Some text to always display</div>
  79.          <ErrorBoundary>
  80.             {<SpecificComponentWithError />}
  81.          </ErrorBoundary>
  82.      </div>
  83.   )
  84. }
  85.  
  86. ErrorBoundary.propTypes = {
  87.   children: PropTypes.node,
  88. };
  89. export default ErrorBoundary;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement