我只是想知道为什么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