我只是想知道爲什麼render()默認將'this'設置爲'正確'或直觀的值,但隨後我在組件上定義的任何其他方法必須明確設置'this'。爲什麼我的組件的render()方法是唯一默認具有正確值'this'的方法?
例如:
class App extends React.Component {
constructor (props) {
super(props);
}
onFormSubmit (e) {
e.preventDefault();
console.log(this);
}
render() {
console.log(this);
return (
<div>
<form onSubmit={this.onFormSubmit}>
<input type="search"/>
<button>Submit</button>
</form>
</div>
);
}
}
ReactDOM.render(
<App/>,
document.getElementById('app')
);
上述控制檯輸出是
App {props: Object, context: Object...}
null
爲什麼呢?有沒有什麼方法可以使this
默認在兩種情況下都是指App
?或者我只需要在constructor
中繼續寫this.onFormSubmit = this.onFormSubmit.bind(this);
?
也許這是沒有意義的想用默認這種行爲(我很新的節目!),但如果是這樣的話請解釋爲什麼:)
所有最優秀的
[編輯]另外...爲什麼在onFormSubmit函數中引用this
時返回null
?
因爲其它功能用於轉換數據..和過渡是異步 –
的'值this'取決於函數是如何被調用。不是它是如何定義的。參見:http://stackoverflow.com/questions/13441307/how-does-the-this-keyword-in-javascript-act-within-an-object-literal/13441628?s=1|4.2098#13441628 – slebetman