反应中ES5与ES6的区别有哪些

  

中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的区别有哪些