【问题标题】:Typeerror: this.checkPositions is not a function React类型错误:this.checkPositions 不是 React 函数
【发布时间】:2020-09-01 03:08:10
【问题描述】:

所以我在我的 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 之类的变量,但没有任何效果。

Edit 它在这个函数内部被调用:

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

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

【问题讨论】:

  • 可能是“this”绑定的问题

标签: reactjs function this typeerror gsap


【解决方案1】:

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

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

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

...={this.updateCenterElem.bind(this)}

【讨论】:

  • 谢谢我会试试你说的,它是在另一个方法里面调用的,看我的编辑
  • 谢谢!您的第一个答案有效!我还有很长的路要走,需要学习更多!
猜你喜欢
  • 1970-01-01
  • 2020-09-15
  • 2016-02-26
  • 2013-04-01
  • 2016-03-06
  • 2018-04-28
  • 2019-02-14
  • 2021-10-02
相关资源
最近更新 更多