无法从ReactJS中的事件处理程序访问对象

时间:2019-03-09 16:23:26

标签: javascript reactjs

question = {
    quest : "How old am I?",
    answers : [17,18,20,25],
    correct : 17,
}

checkAnswer(){
    var usersAnswer = document.getElementById('ans-1').textContent;
    var answer = this.question.correct;
    if(usersAnswer==answer){
        alert('correct')
    }else{
        alert('u lost')
    }
}

使用此代码,我无法从ReactJS中的事件处理程序访问对象。 我收到此错误:

  

TypeError:无法读取question的属性undefined   P.S我是乞gg

1 个答案:

答案 0 :(得分:1)

该错误是由于错误的this绑定引起的。您可以使用Arrow Function

checkAnswer = () => {
    var usersAnswer = document.getElementById('ans-1').textContent;
    var answer = this.question.correct;
    if(usersAnswer==answer){
        alert('correct')
    }else{
        alert('u lost')
    }
}

您也可以使用Function.prototype.bind()代替箭头功能。您只需要添加this.checkAnswer.bind(this)。而是在this.checkAnswer.bind设置处理程序的位置