функция не вызывается после установки состояния

#react-native #state

Вопрос:

При нажатии, если вызывается =gt; Я пытаюсь позвонитьgt; fetchCryptoStats , но он не вызывается после установки состояния.Мне нужен обновленный «SelectedItem» для передачи в функцию. Я изучал хуки жизненного цикла, и это было руководство, которое я получил, но функция не вызывается … есть какие-нибудь советы?

 lt;ListItem  bottomDivider={true}  onPress={() =gt; {  this.setState(  {  setModalVisible: true,  selectedItem: symbol.toUpperCase(),  },  function () {  console.log(this.state.selectedItem);  this.fetchCryptoStats(this.state.selectedItem);  },  );  }}gt;  

Комментарии:

1. Добавьте консоль. войдите в эту функцию и повторите попытку, сообщите нам, если они что-нибудь напечатают

2. Журнал консоли @LucasVazquez даже не вызывается

Ответ №1:

Мое предложение состоит в том, чтобы создать функцию и выполнить вашу функцию fetchCryptoStats, получить ответ, а затем нажать в вашем новом состоянии

в этой среде вы не можете использовать это состояние this.state.selectedItem , потому что оно асинхронное useState , которое еще не обновлено, вы должны использовать это symbol.toUpperCase() , потому что оно имеет то же значение

 selectedItem: symbol.toUpperCase()  

тогда ваш код будет выглядеть так

 const handlePress=()=gt;{ const newVar = this.fetchCryptoStats(symbol.toUpperCase()) //here const newState= {  setModalVisible: true,  selectedItem: symbol.toUpperCase(),  yourAttribute: newVar,  }   this.setState(newState); }   onPress={handlePress}  

Комментарии:

1. Я пробовал, это не работает, каким должен быть ваш атрибут?

2. Мне нужен ответ государства.SelectedItem

3. @FrankBoccia в этой среде вы не можете использовать это состояние, потому что это асинхронное состояние использования, вы должны использовать этот символ.в верхнем регистре()