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
我几乎可以肯定我遗漏了一些微不足道的东西。但是我已经被这个问题困了一天多了,所以我想我会向你寻求帮助。
是否有另一种调用 matchMealPrefence 而不会出现异步问题的方法?
是否可以在调用matchMealPreference的位置调用函数?
在matchMealPrefence函数中再次调用handlePress函数是不是很不明智?
非常感谢任何帮助
编辑: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()
})
}
按下按钮时,我的应用程序调用 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
我几乎可以肯定我遗漏了一些微不足道的东西。但是我已经被这个问题困了一天多了,所以我想我会向你寻求帮助。
是否有另一种调用 matchMealPrefence 而不会出现异步问题的方法?
是否可以在调用matchMealPreference的位置调用函数?
在matchMealPrefence函数中再次调用handlePress函数是不是很不明智?
非常感谢任何帮助
编辑: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()
})
}