使用Function.call(this,arg1)会为此未定义

时间:2019-02-19 05:30:56

标签: javascript reactjs

Main App.jsx

enter image description here

来自单独文件的功能

enter image description here

在第一张图片的最后一行中,我试图使用.call()从另一个文件中调用handleHandPageNavigation函数。我想将 this 传递给函数,以便更改状态,这将导致页面更新。

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

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

1 个答案:

答案 0 :(得分:0)

您已经使用箭头函数定义了handleOnPageNavigation方法,无论您将什么作为执行上下文传递给它,它都会忽略所有方法并采用定义它的上下文。使其成为常规函数以获取执行上下文

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

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