react双向绑定--骚气的es6

前端之家收集整理的这篇文章主要介绍了react双向绑定--骚气的es6前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

现在实下的react写法,最流行的莫过于两种,

1.React.createClass这种语法

2.class这种语法(es6)

那么要我说,最骚气的肯定是第二种es6的写法啦,那么今天就来讲一下用es6写法来实现的双向绑定

首先我们还是来看一下es5的双向绑定是怎么实现的

var InputControlES5 = React.createClass({
  propTypes: {
    initialValue: React.PropTypes.string
  },defaultProps: {
    initialValue: ''
  },// 初始化状态值
  getInitialState: function() {
    return {
      text: this.props.initialValue || 'placeholder'
    };
  },// 绑定事件
  handleChange: function(event) {
    this.setState({
      text: event.target.value
    });
  },render: function() {
    var text = this.state.text;
    return (
      <div>
        Type something:
        <input onChange={this.handleChange}
               value={text} />
        Write something:
        <p>{text}<p/>
      </div>
    );
  }
});

上面这个类就是一个最简单的双向绑定实现方式

下面我们再来看es6的写法

class InputControlES6 extends React.Component {
  constructor(props) {
    super(props);

    // 初始化 state
    this.state = {
      text: props.initialValue || 'placeholder'
    };

    // 在构造函数内必须先bind这个事件
    this.handleChange = this.handleChange.bind(this);
  }
  
  handleChange(event) {
    this.setState({
      text: event.target.value
    });
  }
  
  render() {
    consot text = this.state.text;
    return (
      <div>
        Type something:
        <input onChange={this.handleChange}
               value={text} />
        Write something:
        <p>{text}<p/>
      </div>
    );
  }
}
InputControlES6.propTypes = {
  initialValue: React.PropTypes.string
};
InputControlES6.defaultProps = {
  initialValue: ''
};

区别其实就在于一下几个点

1.getInitialState 与 constructor

2.在es6写法中必须在constructor函数中bind事件

还有一个必须牢记的共同点,

双向绑定的那个属性值,必须要初始化(切记)

原文链接:https://www.f2er.com/react/305537.html

猜你在找的React相关文章