Typeerror:this.checkPositions不是函数React

问题描述 投票:0回答:1

因此,我的react应用程序中有少量代码使我的应用程序崩溃:

updateCenterElem() {
let elems = document.elementsFromPoint(winMidX, winMidY);
elems.forEach(elem => {
  if(elem.matches(imageSelector) && !lastCenteredElem.isSameNode(elem)) {
    lastCenteredElem = elem; 

    this.checkPositions(lastCenteredElem);
  }
});
}

然后我收到以下错误:typeerror:this.checkPositions不是函数。我猜我在某个时候失去了这个而且我尝试了很多事情,例如绑定'this'或声明像self = this这样的变量,但是没有用。

编辑此函数内部称为:

createDraggable() {
 let options = {
trigger: ".mask",
dragResistance: 0.4,
resistance: 400,
onDrag: this.updateCenterElem,
}

if(useInertia) {
options.inertia = true;
options.onThrowUpdate = this.updateCenterElem;

if(useCenterGrid) {
  options.onThrowComplete = centerGrid;
}
} else if(useCenterGrid) { // No inertia
options.onDragEnd = centerGrid;
}

return Draggable.create(containerSelector, options);
}

我正在使用gsap

您是否知道如何解决我的问题?谢谢

reactjs function this typeerror gsap
1个回答
1
投票

您如何使用updateCenterElem?如果是事件处理程序等,则方法声明应如下所示:

updateCenterElem = () => {
let elems = document.elementsFromPoint(winMidX, winMidY);

或者您应该在设置处理程序时绑定上下文

...={this.updateCenterElem.bind(this)}
© www.soinside.com 2019 - 2024. All rights reserved.