因此,我的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
您是否知道如何解决我的问题?谢谢
您如何使用updateCenterElem
?如果是事件处理程序等,则方法声明应如下所示:
updateCenterElem = () => {
let elems = document.elementsFromPoint(winMidX, winMidY);
或者您应该在设置处理程序时绑定上下文
...={this.updateCenterElem.bind(this)}