3 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
嘗試改變
xhr.onreadystatechange = function() {
到
xhr.onreadystatechange = () => {
簡(jiǎn)短說(shuō)明:
內(nèi)部this
afunction () {}
取決于調(diào)用它的對(duì)象,因此當(dāng)您將函數(shù)傳遞到某處時(shí),您真的不知道this
將引用什么。
對(duì)于箭頭函數(shù),this
指的this
是封閉函數(shù)中的相同內(nèi)容,即 for 的值this
是詞法解析的。
您可以在此處閱讀更詳細(xì)的說(shuō)明

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
將函數(shù)更改為箭頭函數(shù)或?qū)⑵渥鳛楹瘮?shù)中的參數(shù)傳遞,然后在函數(shù)中使用 this.setState({}) 像這樣
xhr.onreadystatechange = function(this) {
if (xhr.readyState === XMLHttpRequest.DONE) {
console.log(xhr.responseText);
this.setState({name: xhr.responseText});
}
}

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
確保引用正確的對(duì)象或使用箭頭函數(shù)
componentDidMount() {
//AJAX REQUEST
var that = this;//make sure you reference the right object
const url = 'http://localhost:8080/ping';
const xhr = new XMLHttpRequest();
xhr.responseType = 'text';
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
console.log(xhr.responseText);
that.setState({name: xhr.responseText});
}
}
xhr.open("GET", url);
xhr.send();
}
添加回答
舉報(bào)