react native 在 setState 之后调用胖箭头函数:未定义函数

react native calling a fat arrow function after setState: function is not defined

按下按钮时,我的应用程序调用 handlePress 函数,该函数 returns 来自数组的随机对象。

handlePress 函数:

handlePress = () => {
      this.setState({
        vitamin: getRandomIngredient(vitaminArray),
      }, ()=> matchMealPreference())
    }

如果我用 console.log() 替换 matchMealPreference() 它工作得很好。

设置新状态后,我想用粗箭头立即调用另一个函数。否则我 运行 陷入异步问题。

matchMealPreference 函数如下所示:

matchMealPreference = () => {
      if(this.props.mealPreference === this.state.protein.getIngredientFlag()){
        return state
      } else {
        handlePress()
      }
    }

从数组中获取随机对象的函数:

function getRandomIngredient (arr){
  if (arr && arr.length) {
    return arr[Math.floor(Math.random() * arr.length)];
  }
}

我收到错误:

reference error. matchMealPreference is not defined 

我几乎可以肯定我遗漏了一些微不足道的东西。但是我已经被这个问题困了一天多了,所以我想我会向你寻求帮助。

非常感谢任何帮助

编辑:Vijay Menon 的回答是正确的。我需要添加 'this'。谢谢!

您必须在 setState 中使用 "this" 关键字引用 "matchMealPreference"。您必须在 "matchMealPreference" 函数

中调用 "handlePress" 执行相同的操作

https://codesandbox.io/s/542919430l

   changeStr = () => {
     this.setState({str:"Changed"})
   }
    click = () => {
      this.setState({num:this.state.num+1},() => {
        this.changeStr()
      })
    }