Skip to content

Instantly share code, notes, and snippets.

@davidpaulhunt
Last active September 27, 2018 21:48
Show Gist options
  • Save davidpaulhunt/1091b91ad0271f2df9b1 to your computer and use it in GitHub Desktop.
Save davidpaulhunt/1091b91ad0271f2df9b1 to your computer and use it in GitHub Desktop.

Declaration

// old
const helloWorld = React.createClass({
  render() {},
});

// new
class HelloWorld extends React.Component {
  render() {}
}

Default properties and property types

// old
const helloWorld = React.createClass({
  getDefaultPropTypes() {
    return {
      greeting: React.PropTypes.string,
    };
  },
  
  getDefaultProps() {
    return {
      greeting: 'Hello, world!',
    };
  },
  
  render() {},
});

// new
class HelloWorld extends React.Component {
  static propTypes = {
    greeting: React.PropTypes.string,
  };
  
  static defaultProps = {
    greeting: 'Hello, world!',
  };
  
  render() {}
}

Default state

// old
const helloWorld = React.createClass({
  getDefaultPropTypes() {
    return {
      greeting: React.PropTypes.string,
    };
  },
  
  getDefaultProps() {
    return {
      greeting: 'Hello, world!',
    };
  },
  
  getInitialState(props) {
    return {
      greetedCount: 0,
    };
  },
  
  render() {},
});

// new
class HelloWorld extends React.Component {
  static propTypes = {
    greeting: React.PropTypes.string,
  };
  
  static defaultProps = {
    greeting: 'Hello, world!',
  };
  
  constructor(props) {
    super(props);
    this.state = { greetedCount: 0 };
  }
  
  render() {}
}

Proper binding

// old
const helloWorld = React.createClass({
  getDefaultPropTypes() {
    return {
      greeting: React.PropTypes.string,
    };
  },
  
  getDefaultProps() {
    return {
      greeting: 'Hello, world!',
    };
  },
  
  getInitialState(props) {
    return {
      greetedCount: 0,
    };
  },
  
  handleClick(e) {
    alert(this.props.greeting);
    this.setState({ greetedCount: this.greetedCount + 1 });
  },
  
  render() {
    return (
      <button onClick={ this.handleClick.bind(this) }>Click Me!</button>
    );
  },
});

// new
class HelloWorld extends React.Component {
  static propTypes = {
    greeting: React.PropTypes.string,
  };
  
  static defaultProps = {
    greeting: 'Hello, world!',
  };
  
  constructor(props) {
    super(props);
    this.state = { greetedCount: 0 };
  }
  
  handleClick = () => {
    alert(this.props.greeting);
    this.setState({ greetedCount: this.state.greetedCount + 1 });
  }
  
  render() {
    return (
      <button onClick={ handleClick }>Click Me!</button>
    );
  }
}
@ankitsingh101
Copy link

can you create element also

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment