我知道,每次將自定義函數傳遞給像onChange或onSubmit這樣的事件處理函數時,我們都需要使用.bind。在以下示例中,我們傳遞一個事件處理函數(talk函數)作爲道具。 當用戶點擊一個按鈕時,會調用通話功能。爲什麼這個回調函數不加bind(this)?
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;
此示例使用按鈕通話= {} this.talk代替按鈕{this.talk.bind。(這)}
,但是爲什麼呢?
你只需要'.bind'如果你需要'this'裏面的功能是指一個特定的值。由於'talk'不能訪問'this','.bind'不是必需的。還有一個事實是'React.createClass'自動綁定每個方法,但是這對你的例子沒有什麼影響。 –