React Native - в iOS не работает должным образом обратный вызов - PullRequest
0 голосов
/ 30 октября 2018

У меня есть модальный компонент (загрузчик), и я использовал его почти на каждом экране, но проблема в том, что когда у меня setState и я вызываю Alert в callback setState, он не работает должным образом,

вот мой код:

LoginProcess(){
this.setState({postLoader:true})
//calling API and handle if the password is wrong, showing alert
  if(response.ok && response.status == 200){
    //navigate to home
  } else {
    this.setState({postLoader:false},()=>Alert.alert("Perhatian", "Password salah!\nSilahkan coba kembali"))
  }
}

<View>
  <PostLoader showModal={this.state.postLoader} nameLoader="Mengirim data"/> //the loader using modal
</View>

как вы можете видеть в else{} Я обработал callback, чтобы показать alert, но фактический результат странный,

enter image description here

мое postLoader состояние все еще true и всплывающее окно Alert закрывается, поэтому я ничего не могу сделать, кроме как провести свое приложение в recent apps и снова открыть,

у кого-нибудь есть идея, как подождать, пока postLoader состояние не станет ложным, затем вызвать Alert?

1 Ответ

0 голосов
/ 30 октября 2018

Может быть установлено состояние в false и затем показывать окно предупреждения. Когда вы показываете предупреждение в обратном вызове setState, состояние будет изменено, но компонент не выполнит повторную визуализацию. Попробуйте это,

LoginProcess(){
this.setState({postLoader:true})
//calling API and handle if the password is wrong, showing alert
  if(response.ok && response.status == 200){
    //navigate to home
  } else {
    this.setState({postLoader:false})
    Alert.alert("Perhatian", "Password salah!\nSilahkan coba kembali")
  }
}

<View>
  <PostLoader showModal={this.state.postLoader} nameLoader="Mengirim data"/> //the loader using modal
</View>
...