我有以下的,在ReactJS工作一段代碼v0.13.x:reactjs:如何訪問v15.1.0參考值
handleEmail: function(e) {
if (e.key === "Enter") {
var input_text = this.refs.email.getDOMNode().value;
// more code here ....
}
},
render: function() {
return (
<div className='dlg' onClick={this.handleClick}>
<p>
<span className="msg">{this.state.msg}</span>
<input type="text" onKeyPress={this.handleEmail} ref="email" />
</p>
</div>
)
}
現在我試圖把這段代碼轉換,使其與反應v15.0.1兼容,並且我已經試過這樣的事情:
handleEmail(e) {
if (e.key === "Enter") {
var input_text = ReactDOM.findDOMNode(this.refs.email).value;;
// more code here ....
}
}
render() {
return (
<div className='dlg' onClick={this.handleClick}>
<p>
<span className="msg">{this.state.msg}</span>
<input type="text" onKeyPress={this.handleEmail} ref="email" />
</p>
</div>
)
}
,但失敗了,我調試的代碼,結果發現,使用最新的語法,「這」是handleEmail功能空。
有沒有人有任何暗示爲什麼以前工作,而不是現在? (和最重要的:) ...如何解決這個問題?)
作爲一個側面說明下面的答案,你會經常跨'.bind(本)來'在用於React的ES6類語法,這是以一種更傳統的方式完成同樣的事情(將'this'的正確上下文綁定到正在使用它的函數)。你可以用'this.handleEmail.bind(this)'來解決你的問題,但是從長遠來看,胖箭頭'=>'函數更加簡潔和方便。 –