【发布时间】:2017-06-05 04:20:33
【问题描述】:
据我所知,每次将自定义函数传递给 onChange 或 onSubmit 等事件处理程序时,我们都需要使用 .bind
在下面的示例中,我们将事件处理程序(talk 函数)作为道具传递。 当用户点击按钮时,会调用talk函数。
var React = require('react');
var ReactDOM = require('react-dom');
var Button = require('./Button');
var Talker = React.createClass({
talk: function () {
for (var speech = '', i = 0; i < 10000; i++) {
speech += 'blah ';
}
alert(speech);
},
render: function () {
return <Button talk={this.talk}/>;
}
});
ReactDOM.render(
<Talker />,
document.getElementById('app')
);
Button.js
var React = require('react');
var Button = React.createClass({
render: function () {
return (
<button onClick={this.props.talk}>
Click me!
</button>
);
}
});
module.exports = Button;
本示例使用 Button talk={this.talk} 而不是 Button {this.talk.bind.(this)}
,但是为什么呢?
【问题讨论】:
-
如果函数内部需要
this来引用特定值,则只需要.bind。由于talk不访问this,所以.bind不是必需的。还有一个事实是React.createClass自动绑定每个方法,但这在您的示例中并没有什么不同。
标签: javascript reactjs