Last active
July 17, 2016 13:13
-
-
Save chhuang/6e13a340488fa0dff844a46ab3acdc4a to your computer and use it in GitHub Desktop.
React ES5 v/s ES6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 1. require/import | |
// ES5: require | |
var React = require('react'); | |
var { Component, PropTypes } = React; | |
// ES6: import | |
import React, { Component, PropTypes } from 'react'; | |
// 2. Module import/export | |
// ES5 | |
var MyComponent = React.createClass({ | |
... | |
}); | |
module.exports = MyComponent; | |
var MyComponent = require('./MyComponent'); | |
// ES6 | |
export default class MyComponent extends Component{ | |
... | |
} | |
import MyComponent from './MyComponent'; | |
// 3. Declarations | |
// ES5 | |
var Photo = React.createClass({ | |
componentWillMount: function() { ... }, | |
render: function() { | |
return ( | |
<Image source={this.props.source} /> | |
); | |
}, | |
}); | |
// ES6 | |
class Photo extends React.Component { | |
componentWillMount() { ... } | |
render() { | |
return ( | |
<Image source={this.props.source} /> | |
); | |
} | |
} | |
// 4. Props | |
// ES5 | |
var Video = React.createClass({ | |
getDefaultProps: function() { | |
return { | |
autoPlay: false, | |
maxLoops: 10, | |
}; | |
}, | |
propTypes: { | |
autoPlay: React.PropTypes.bool.isRequired, | |
maxLoops: React.PropTypes.number.isRequired, | |
posterFrameSrc: React.PropTypes.string.isRequired, | |
videoSrc: React.PropTypes.string.isRequired | |
}, | |
render: function() { | |
return ( | |
<View /> | |
); | |
}, | |
}); | |
// ES6 | |
class Video extends React.Component { | |
static defaultProps = { | |
autoPlay: false, | |
maxLoops: 10, | |
}; | |
static propTypes = { | |
autoPlay: React.PropTypes.bool.isRequired, | |
maxLoops: React.PropTypes.number.isRequired, | |
posterFrameSrc: React.PropTypes.string.isRequired, | |
videoSrc: React.PropTypes.string.isRequired | |
}; | |
render() { | |
return ( | |
<View /> | |
); | |
} | |
} | |
// 5. State | |
// ES5 | |
var Video = React.createClass({ | |
getInitialState: function() { | |
return { | |
loopsRemaining: this.props.maxLoops | |
}; | |
} | |
}); | |
//ES6 | |
class Video extends React.Component { | |
constructor(props) { | |
super(props); | |
this.state = { | |
loopsRemaining: this.props.maxLoops | |
}; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Source