在setState:函数未定义后反应本地调用胖箭头函数

时间:2019-03-15 21:56:06

标签: reactjs native setstate

按下按钮后,我的应用程序调用handlePress函数,该函数从数组中返回随机对象。

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 

我几乎可以肯定我缺少一些琐碎的东西。但是我已经在这个问题上待了一天多了,所以我想我会向您寻求帮助。

  • 是否有另一种方法可以调用matchMealPrefence而不发生异步问题?

  • 是否可以在调用matchMealPreference的位置调用函数?

  • 在matchMealPrefence函数内再次调用handlePress函数是否明智?

非常感谢您的帮助

编辑:Vijay Menon的答案是正确的。我需要添加“ this”。谢谢!

1 个答案:

答案 0 :(得分:0)

您必须在setState中使用“ this”关键字引用“ matchMealPreference”。您必须在“ matchMealPreference”函数中调用“ handlePress”执行相同的操作

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

QuerySyntaxException: customer_coupons is not mapped