中ES5的反应与ES6的区别有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
在ES5里,如果使用CommonJS标准,引入反应包基本通过需要进行,代码类似这样:
//ES5 var React =,要求(“react"); var { ,组件, ,proptype },=,反应,,//引用反应抽象组件 var ReactNative =,要求(“react-native"); var { ,形象, ,文本, },=,ReactNative;,//引用具体的React 本地组件
在ES6里,进口写法更为标准
//ES6 {import 反应,还以为; ,组件, proptype, },得到& # 39;反应# 39;; import { ,形象, ,文本 },得到& # 39;react-native& # 39;
<>强导出单个类强>
在ES5里,要导出一个类给别的模块用,一般通过<代码>模块。出口> 代码来导出
//ES5 var MyComponent =, React.createClass ({ ,…… }); MyComponent module.exports =,添加;
在ES6里,通常用<代码>出口默认> 代码来实现相同的功能:
//ES6 export default  class MyComponent  extends 组件{ ,…… }
引用的时候也类似:
//ES5 var MyComponent =,要求(& # 39;。/MyComponent& # 39;);//ES6 import MyComponent 得到& # 39;。/MyComponent& # 39;;
<强>注意:>强导入和导出的写法必须配套,不能混用!
<强>定义组件强>
在ES5里,通常通过<代码>反应。createClass> 代码来定义一个组件类,像这样:
//ES5 var Photo =, React.createClass ({ ,呈现:函数(),{ return 才能; ,,& lt; Image 源={this.props.source},/比; ,,); }, });
在ES6里,我们通过定义一个继承自<代码>反应。组件> 代码的类来定义一个组件类,像这样:
//ES6 class Photo  extends React.Component  { ,使(){ return 才能; ,,& lt; Image 源={this.props.source},/比; ,,); ,} }
<>强给组件定义方法强>
从上面的例子里可以看的到,给组件定义方法不再用名字<代码>:函数()> 代码的写法,而是直接用名字(),在方法的最后也不能有逗号了。
//ES5 var Photo =, React.createClass ({ ,componentWillMount:函数(){ }, ,呈现:函数(),{ return 才能; ,,& lt; Image 源={this.props.source},/比; ,,); }, });
//ES6 class Photo  extends React.Component  { ,componentWillMount (), { ,} ,使(){ return 才能; ,,& lt; Image 源={this.props.source},/比; ,,); ,} }
<>强定义组件的属性类型和默认属性强>
在ES5里,属性类型和默认属性分别通过proptype成员和getDefaultProps方法来实现
//ES5 var Video =, React.createClass ({ ,getDefaultProps:函数(),{ return {才能 ,,,播放:假的, ,,maxLoops: 10 ,,}; }, ,proptype: { ,,播放:React.PropTypes.bool.isRequired, ,,maxLoops: React.PropTypes.number.isRequired, ,,posterFrameSrc: React.PropTypes.string.isRequired, ,,videoSrc: React.PropTypes.string.isRequired, }, ,呈现:函数(),{ return 才能; ,,& lt; View /比; ,,); }, });
在ES6里,可以统一使用静态成员来实现
//ES6 class Video  extends React.Component  { ,static defaultProps =, { ,,播放:假的, ,,maxLoops: 10 ,},//,注意这里有分号 ,static propTypes =, { ,,播放:React.PropTypes.bool.isRequired, ,,maxLoops: React.PropTypes.number.isRequired, ,,posterFrameSrc: React.PropTypes.string.isRequired, ,,videoSrc: React.PropTypes.string.isRequired, ,},//,注意这里有分号 ,使(){ return 才能; ,,& lt; View /比; ,,); ,}//,注意这里既没有分号也没有逗号 }
也有人这么写,虽然不推荐,但读到代码的时候你应当能明白它的意思:
//ES6 class Video  extends React.Component  { ,使(){ return 才能; ,,& lt; View /比; ,,); ,} } Video.defaultProps =, { ,播放:假的, ,maxLoops: 10 }; Video.propTypes =, { ,播放:React.PropTypes.bool.isRequired, ,maxLoops: React.PropTypes.number.isRequired, ,posterFrameSrc: React.PropTypes.string.isRequired, ,videoSrc: React.PropTypes.string.isRequired, };反应中ES5与ES6的区别有哪些