首页 > 解决方案 > 使用 Function.call(this, arg1) 导致 this 未定义

问题描述

主应用程序.jsx

在此处输入图像描述

来自单独文件的函数

在此处输入图像描述

在第一张图片的最后一行,我尝试使用 .call() 从另一个文件调用函数 handleOnPageNavigation。我想将它传递函数,以便我可以更改应该导致页面更新的状态。

但是在单击该项目时,控制台会指出无法读取未定义的属性“setState”

我不确定我是否理解为什么被认为是未定义的,因为我通过 .call() 传递它。任何见解将不胜感激。谢谢

标签: javascriptreactjs

解决方案


您已经使用箭头函数来定义 handleOnPageNavigation 方法,无论您将什么作为执行上下文传递给它,它都会忽略所有这些并获取定义它的上下文。把它变成一个普通的函数来获取执行上下文

function handleOnPageNavigation(item){
   this.setState({
      page: item.key
   })
}
export { handleOnPageNavigation };

但是,我必须说这种模式很难调试,因此您必须始终拥有在组件本身而不是在组件外部调用 setState 的函数


推荐阅读