第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

componentDidMount 中的 setState 不起作用

componentDidMount 中的 setState 不起作用

偶然的你 2023-01-06 15:19:42
我發(fā)現(xiàn)其他帖子也有類(lèi)似的錯(cuò)誤,但那些帖子有需要綁定的功能。在下面的簡(jiǎn)單程序中,我嘗試在 AJAX 請(qǐng)求成功后更新 DOM,但出現(xiàn)錯(cuò)誤“.TypeError:this.setState 不是函數(shù)”。請(qǐng)幫助我理解為什么這段代碼不起作用。import React from 'react';import logo from './logo.svg';import './App.css';export class App extends React.Component {    constructor(props) {        super(props);        this.state = {            name: '(name will be inserted after ajax request)'        };        console.log('constructor');    }    componentDidMount() {        //AJAX REQUEST        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);                this.setState({name: xhr.responseText});            }        }        xhr.open("GET", url);        xhr.send();    }    render() {        console.log('render')        return <h1 > Hello {this.state.name} </h1>;    }}
查看完整描述

3 回答

?
慕尼黑的夜晚無(wú)繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

嘗試改變

xhr.onreadystatechange = function() {

xhr.onreadystatechange = () => {

簡(jiǎn)短說(shuō)明:

內(nèi)部thisafunction () {}取決于調(diào)用它的對(duì)象,因此當(dāng)您將函數(shù)傳遞到某處時(shí),您真的不知道this將引用什么。

對(duì)于箭頭函數(shù),this指的this是封閉函數(shù)中的相同內(nèi)容,即 for 的值this是詞法解析的。

您可以在此處閱讀更詳細(xì)的說(shuō)明


查看完整回答
反對(duì) 回復(fù) 2023-01-06
?
藍(lán)山帝景

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});

        }

    }


查看完整回答
反對(duì) 回復(fù) 2023-01-06
?
慕斯709654

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();


    }


查看完整回答
反對(duì) 回復(fù) 2023-01-06
  • 3 回答
  • 0 關(guān)注
  • 261 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)