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

标签 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: Cannot read property question of undefined P.S i'm begginer

最佳答案

该错误是由于 this 绑定(bind)错误造成的。您可以使用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 您要在其中设置处理程序

关于javascript - 无法从 ReactJS 中的事件处理程序访问对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55079397/

相关文章:

javascript - 更改超链接的点击

javascript - 从 dispatch 返回 promise

javascript - 根据刻度值更改 D3 刻度线的大小

javascript - jquery $(window).height() 和 $(document).height() 返回相同

node.js - 连接上游时出错。 Docker 撰写,NodeJS,Nginx

reactjs - 将数组传递给组件

javascript - 即使没有选择预处理器,这个 React 代码如何在 CodePen 上工作?

javascript - 集成 React.js 非 JS 服务器 API

javascript - 如何从 JavaScript 对象呈现 HTML 中的嵌套列表?

javascript - 在包装上应用不同的 CSS 样式