【发布时间】:2016-12-02 03:54:43
【问题描述】:
使用 ES5 开发 ReactJS,一个组件可以这样表述:
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 中 this 在使用 new 运算符时引用实例化对象本身,有人可以告诉我使用 bind 的真正目的是什么?是不是和 React 的内部机制有关?
【问题讨论】:
-
bind只是核心 javascript。这就是事件绑定的工作方式。这不是一个 React 概念。 -
“这是预期的自然行为” - 不。这是
React.createClass的魔法——ES6 的行为是自然的。
标签: javascript reactjs bind