首页 > 解决方案 > React Native 函数调用不起作用 - 找不到 `this.function2`

问题描述

我无法让这个工作。这可能很简单,但在线上没有有效的信息。

这是我想要做的。

class Test {
  componentDidMount() {
      this.function1();
  }      

  function1() {
     var myListener = listener.on(something) {
         console.log('function1 triggered');
         key = 'djh3489739082';
         name = 'gary';
         email = 'gary@email.com';
         this.function2(key, name, email);
     }
  }

  function2 = ({ key, name, email }) => {
     console.log('key: ' + key);
     console.log('name: ' + name);
     console.log('email: ' + email);
  }
}

基本上就是这样。我在控制台中得到的错误是它找不到变量this.function2

this.当我尝试删除前缀时它不起作用。我的代码中还有一个更简单的函数调用,它可以像这样正常工作:

  function3() {
     // Some code here
     this.function4();
  }

  function4() {
     // Do some things.
  }

并且function3调用function4没有问题。只是因为我需要传递参数,它才会掉下来,显然没有人需要这样做。我发现const在函数之前使用的唯一示例。就像:

const function2 = ({ parameter1, parameter2, parameter3 }) => {

但这会立即引发错误。我不能使用constorvar或任何那些东西。

这应该很容易,当然!有任何想法吗?

标签: javascriptfunctionreact-native

解决方案


这是您的代码中的问题。你有多少参数function2,不是三,而是一。它需要一个 JSON 对象作为参数,它有 3 个属性:和key,因为你用 包装了它们,但是当你在 中调用它时,你传递了 3 个参数给它,没有,这使它不是一个 JSON 对象。nameemail{}function1{}

因此,您可以:

// Don't modify function2 but change function1 like so
function1() {
    this.function2({ key, name, email })
}

或者

// Don't modify function1 but change function2 like so
function2(key, name, email) {

}

推荐阅读