在ReactJS中使用ES5进行开发,一个组件可以被定义为以下内容:
var MyComponent = React.createClass({
alertSomething: function(event) {
alert(event.target);
},
render: function() {
return (
<button onClick={this.alertSomething}>Click Me!</button>
);
}
});
ReactDOM.render(<MyComponent />);
在这个例子中,
this
代表对象本身,这是预期的自然行为。
问题
我的问题是:你如何使用ES6创建组件?
class MyComponent extends React.Component {
constructor(props) {
super(props);
}
alertSomething(event) {
alert(event.target);
}
render() {
return (
<button onClick={this.alertSomething.bind(this)}>Click Me!</button>
);
}
}
ReactDOM.render(<MyComponent />);
在JavaScript中,使用new运算符时,this
引用实例化的对象本身,那么有人能告诉我使用bind的真正目的是什么吗?这与React的内部机制有关吗?
bind
只是核心 JavaScript。它是事件绑定的工作方式,而不是 React 的概念。 - mnsrReact.createClass
的魔法 - ES6的行为才是自然的行为。 - Bergi