Typeerror: this.checkPositions is not a function React
Typeerror: this.checkPositions is not a function React
所以我的 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 is not a function。
我猜我在某个时候失去了这个
我已经尝试了很多事情,比如绑定 '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)}
所以我的 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 is not a function。 我猜我在某个时候失去了这个 我已经尝试了很多事情,比如绑定 '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)}