我有一个用于检测用户是否处于活动状态的函数。但是一旦我移动鼠标就会从_userManager.FindBySubjectIdAsync
引发错误TypeError: this.goActive is not a function
但如果我自己运行resetTimer(e)
,我会在控制台中获得“oy”。
这是我的代码:
resetTimer(e)
答案 0 :(得分:3)
您需要将this
中resetTimer
的上下文绑定到您的组件。
阅读官方React文档https://reactjs.org/docs/handling-events.html
答案 1 :(得分:1)
resetTimer
的范围是在回调中调用它的控件,在你的情况下是窗口。
您需要将函数绑定到正确的范围:
this.resetTimer = this.resetTimer.bind(this);
在类构造函数中:
class App extends Component {
constructor(...args) {
super(...args);
this.resetTimer = this.resetTimer.bind(this);
// and all the other class methods
}
// here go method declarations
}
或者您可以使用箭头语法(在ES6中),因此重置计时器变为:
class App extends Component {
resetTimer = (e) => {
// code
}
// and other method declarations
}