#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 в этой среде вы не можете использовать это состояние, потому что это асинхронное состояние использования, вы должны использовать этот символ.в верхнем регистре()