小编Ton*_*Jen的帖子

反应构造函数ES6与ES7

我在React教程页面上读到,ES6将使用构造函数来初始化状态.

export class Counter extends React.Component {
  constructor(props) {
    super(props);
    this.state = {count: props.initialCount};
  }
  tick() {
    this.setState({count: this.state.count + 1});
  }
  render() {
    return (
      <div onClick={this.tick.bind(this)}>
        Clicks: {this.state.count}
      </div>
    );
  }
}
Counter.propTypes = { initialCount: React.PropTypes.number };
Counter.defaultProps = { initialCount: 0 };
Run Code Online (Sandbox Code Playgroud)

然后继续,使用ES7语法实现同样的事情.

// Future Version
export class Counter extends React.Component {
  static propTypes = { initialCount: React.PropTypes.number };
  static defaultProps = { initialCount: 0 };
  state = { count: this.props.initialCount };
  tick() {
    this.setState({ count: …
Run Code Online (Sandbox Code Playgroud)

reactjs

40
推荐指数
1
解决办法
2万
查看次数

使用ES6和ES7的ReactJs中的状态

在许多示例中,我看到在一个react组件内部管理状态,你将不得不使用getInitialState,例如在这个例子中.

var LikeButton = React.createClass({
  getInitialState: function() {
    return {liked: false};
  },
  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>
    );
  }
});
Run Code Online (Sandbox Code Playgroud)

但是在ES6语法中使用getInitalState()将不再起作用.那么如何使用ES6语法管理react组件中的状态呢?

一个例子是

// Future Version
export class Counter extends React.Component {
  static propTypes = { initialCount: React.PropTypes.number };
  static defaultProps = { initialCount: 0 };
  state = { count: this.props.initialCount };
  tick() {
    this.setState({ count: this.state.count …
Run Code Online (Sandbox Code Playgroud)

reactjs

4
推荐指数
1
解决办法
5671
查看次数

标签 统计

reactjs ×2