React native 无法访问键盘类中的函数

React native 无法访问键盘类中的函数,react-native,React Native,如果我的键盘关闭,它会抛出一个错误:somefunc未定义,bu console.log正在工作,我不知道哪里出了问题 我所期望的是: 关键点事件将触发动画 但是发生了什么: Error undefined不是此对象。somefunc可以像下面那样绑定代码吗 export default someclass extends React.component{ this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide',

如果我的键盘关闭,它会抛出一个错误:somefunc未定义,bu console.log正在工作,我不知道哪里出了问题

我所期望的是: 关键点事件将触发动画

但是发生了什么:
Error undefined不是此对象。somefunc

可以像下面那样绑定代码吗

export default someclass extends React.component{
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide',keyboardhide);
}

keyboardhide(){
this.somefunc();
}
somefunc(){

if(mode=='up'){

  Animated.timing(
    this.state.animate.marginTop,
    {
      toValue:0,
      duration: 2000,

    }
  ).start();
  Animated.timing(
    this.state.animate.width,
    {
      toValue:this.screenmanipulate(100,'width'),
      duration: 2000,

    }
  ).start();

}

else {

  Animated.timing(
    this.state.animate.marginTop,
    {
      toValue:top,
      duration: 2000,

    }
  ).start();
  Animated.timing(
    this.state.animate.width,
    {
      toValue:width,
      duration: 2000,

    }
  ).start();

}    
render{
....

.....

}

你能像下面那样绑定代码吗

export default someclass extends React.component{
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide',keyboardhide);
}

keyboardhide(){
this.somefunc();
}
somefunc(){

if(mode=='up'){

  Animated.timing(
    this.state.animate.marginTop,
    {
      toValue:0,
      duration: 2000,

    }
  ).start();
  Animated.timing(
    this.state.animate.width,
    {
      toValue:this.screenmanipulate(100,'width'),
      duration: 2000,

    }
  ).start();

}

else {

  Animated.timing(
    this.state.animate.marginTop,
    {
      toValue:top,
      duration: 2000,

    }
  ).start();
  Animated.timing(
    this.state.animate.width,
    {
      toValue:width,
      duration: 2000,

    }
  ).start();

}    
render{
....

.....

}
您可以尝试在键盘隐藏方法之前移动someFun。下面的代码是我想要的:

  _keyboardDidHide = () => {
    this.somefunc();
  };
arrow函数是默认的bind this,但是您定义的方法不是绑定this。你必须用手工把这个装订好。我建议您使用箭头功能。有关绑定的更多信息,请参见

javascript中定义顺序的方法很重要。为此,你可以看到这一点。它很好地解释了这一点。

您可以尝试在键盘隐藏方法之前移动someFun。下面的代码是我想要的:

  _keyboardDidHide = () => {
    this.somefunc();
  };
arrow函数是默认的bind this,但是您定义的方法不是绑定this。你必须用手工把这个装订好。我建议您使用箭头功能。有关绑定的更多信息,请参见


javascript中定义顺序的方法很重要。为此,你可以看到这一点。它解释得很好。

someFunc包含什么?@DevAS我已经更新了代码请看一看someFunc包含什么?@DevAS我已经更新了代码请看一看为什么这不起作用,它应该正常工作,原因是什么,先生?@Subbashchandru,错误信息是什么?如果没有错误,你首先检查somefun是否被调用,如果被调用,可能是somefun的内容问题没有调用somefun,我不认为这是内容问题,我还研究了打字错误我认为是它的错误,先生,你怎么看?@Subbashchandru,我更新了答案,错误的位置在addListener中,它应该是Keyboard.addListener'keyboardDidShow',这是[你的函数];addListener发生了什么你能解释一下吗天才!!!为什么这不起作用,它应该起作用,原因是什么,先生?@subbashchandru,错误信息是什么?如果没有错误,你首先检查somefun是否被调用,如果被调用,可能是somefun的内容问题没有调用somefun,我不认为这是内容问题,我还研究了打字错误我认为是它的错误,先生,你怎么看?@Subbashchandru,我更新了答案,错误的位置在addListener中,它应该是Keyboard.addListener'keyboardDidShow',这是[你的函数];addListener发生了什么你能解释一下吗天才@您需要绑定所有函数。然后,只有您才能获得“this”对象。@subhashchandru您需要绑定所有函数。那么只有你才能得到“this”对象。