按下按钮后,我的应用程序调用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”。谢谢!
答案 0 :(得分:0)
您必须在setState中使用“ this”关键字引用“ matchMealPreference”。您必须在“ matchMealPreference”函数中调用“ handlePress”执行相同的操作
https://codesandbox.io/s/542919430l
QuerySyntaxException: customer_coupons is not mapped