我创建了一个异步函数,每当按下该图标时,该函数都会从api中获取数据并变为红色,但是现在我想在like函数完成后立即导航到另一个页面,但是无法执行。 请帮助
下面是我尝试过的方式,
onButtonPress = async(item) => {
console.log(item)
console.log(this.state.buttonColor,'hello')
if(!this.state.likedItemIds.includes(item._id)){
try {
const response = await fetch("some url"+item._id);
const resJson = await response.text();
this.setState(prevState => ({
likedItemIds: [...prevState.likedItemIds, item._id]
}))
console.log(resJson)
if(this.state.buttonColor!=='white'){
this.props.navigation.navigate('Wishlist')
}
}
catch (error) {
console.error(error);
}
}
请告诉我是否需要其他任何帮助。
答案 0 :(得分:0)
setState
是一个异步函数,允许您将回调作为第二个参数传递。因此,您可以在该回调中进行导航,该回调将在setState
完成后触发。这意味着您将在完成类似操作后离开页面。
您可以执行以下操作:
onButtonPress = async(item) => {
console.log(item)
console.log(this.state.buttonColor,'hello')
if(!this.state.likedItemIds.includes(item._id)){
try {
const response = await fetch("some url"+item._id);
const resJson = await response.text();
this.setState(prevState => ({
likedItemIds: [...prevState.likedItemIds, item._id]
}), () => {
// Do whatever else you need to do here (validation, etc.)
this.props.navigation.navigate('Wishlist')
})
}
catch (error) {
console.error(error);
}
}