在React中使用es6写法

2018-01-18  本文已影响766人  Tauruse

最开始接触React时是因为阮一峰的React 入门实例教程,里面没有使用到es6的写法,但是现在网上的大部分React代码都是使用es6写法,在此记录一些常用的写法,记录下来,方便以后会用到。

1. 创建组件

原始写法:

var HelloComponent= React.createClass({
  render: function() {
    return (
      <p>Hello World</p>
    );
  }
});

es6写法:

class HelloComponents extends React.Component{
  render(){
    return (
      <p>Hello World</p>
    );
  }
}

2. 初始化state

原始写法:

var HelloComponent= React.createClass({
  getInitialState: function() {
    return {liked: false};
  },
  render: ...
  }
});

es6写法:

class HelloComponent extends React.Component{
  constructor(){
    this.state = {
      liked: false
    }
  }

  render()...
}

3.初始化props

原始写法:

var HelloComponent= React.createClass({
  getDefaultProps : function () {
    return {
      title : 'Hello World'
    };
  },
  render: ...
  }
});

es6写法:

class HelloComponent extends React.Component{
  constructor()...
  
  static defaultProps = {
    title : 'Hello World'
  }

  render()...
}

//或者在HelloComponent外面进行设置:
HelloComponent.defaultProps = {
  title : 'Hello World'
}

4. 点击事件

原始写法:

var LikeButton = React.createClass({
  handleClick: function(event) {
    this.setState({liked: !this.state.liked});
  },
  render: function() {
    var text = this.state.liked ? 'like' : 'haven\'t liked';
    return (
      <p onClick={this.handleClick}>
        You {text} this. Click to toggle.
      </p>
    );
  }
});

es6写法:

class LikeButton extends React.Component{
  constructor(){
    this.handleClick = this.handleClick.bind(this);
  }

  /**
    注意:如果需要在点击事件中使用React的state或者是props,就需要
    将方法的this进行bind操作
    */
  handleClick(){
    this.setState({liked: !this.state.liked});
  }

  render(){
    this.setState({liked: !this.state.liked});
    return (<p onClick={this.handleClick}>
        You {text} this. Click to toggle.
      </p>);
  }
}

或者

class LikeButton extends React.Component{
  /**
    注意:如果需要在点击事件中使用React的state或者是props,就需要
    将方法的this进行bind操作
    */
  handleClick(){
    this.setState({liked: !this.state.liked});
  }

  //也可以在onClick中进行bind(this)
  render(){
    this.setState({liked: !this.state.liked});
    return (<p onClick={this.handleClick.bind(this)}>
        You {text} this. Click to toggle.
      </p>);
  }
}

5. PropTypes

原始写法:

 var MyTitle = React.createClass({
    propTypes: {
      title: React.PropTypes.string.isRequired,
    },

    render: function() {
      return <h1> {this.props.title} </h1>;
    }
  });

es6写法:

import PropTypes from 'prop-types';
class MyTitle extends React.PropTypes{
  ...
}

MyTitle.propTypes = {
  title:propTypes.string.isRequired
}

该部分和props类似

上一篇下一篇

猜你喜欢

热点阅读