ES5 vs ES6
ES5中
var React = require('react-native');
ES6中
import React from 'react-native';
.babelrc文件中添加一下内容
{
"whitelist": [
"es6.modules"
]
}
然后重新启动一下packger.sh,即npm start
ES5中
var {
AppRegistry,
StyleSheet,
Text,
View,
} = React;
ES6中
let {
AppRegistry,
StyleSheet,
Text,
View,
} = React;
ES5中
var MyComponent = React.createClass(
{
render: function(){
return (
<Text />
);
}
}
);
ES6中
class MyComponent extends React.Component {
render(){
return(
<Text />
);
}
}
ES5中
var NewDom = React.createClass({//类名一定要大写开头
getDefaultProps: function() {//设置默认属性
return {title:'133'};
},
propTypes: {
title:React.PropTypes.string,
},//属性校验器,表示必须是string
render: function() {
return <div>{this.props.title}</div>;//变量用花括号标识
}
});
ES6中
class NewDom extends React.Component{
//不能再组件定义的时候定义一个属性
render() {
return <div >1{this.props.title}</div>;
}//开头花括号一定要和小括号隔一个空格,否则识别不出来
}
//es6 这两个属性不能写在class内。
NewDom.propTypes={//属性校验器,表示改属性必须是bool,否则报错
title: React.PropTypes.bool,
}
NewDom.defaultProps={title:'133'};//设置默认属性
ES5中
class *** extends React.Component{
getInitialState: function() {
return {liked: false};
}
}
ES6中
class *** extends React.Component{
constructor(props) {
super(props);
this.state = {liked: false};
}
}
ES5中
var NewDom = React.createClass({//类名一定要大写开头
btnClick:function(ele){
console.info(ele);
console.info(this.refs.tex);
},
render: function() {
return <div >
<input type="text" ref="tex" />
<input type="button" onClick={this.btnClick} value='click me' />
</div>;//变量用花括号标识
}
});
ES6中
class NewDom extends React.Component{
btnClick(){
console.info(this);//this为该组件类
console.info(this.refs.tex);//this.refs.tex为组件里面索引为tex的
}
render() {
return <div >
<input type="text" ref="tex" />
<input type="button" onClick={this.btnClick.bind(this)} value='click me' />
</div>;//注意bind后面的this
}
}
ES6特征
- 类名(组件名)一定要用大写开头,否则自定义的组件无法编译,识别不出来。
- 类中定义render函数要注意两点,见代码注释。
render() {//开头花括号一定要和小括号隔一个空格,否则识别不出来
return <ol>//标签前一半一定要和return一行
{
React.Children.map(this.props.children, function (child) {
return <li>{child}</li>;
})
}
</ol>;
}
浙公网安备 33010602011771号