react-native - 设置状态后未调用函数
问题描述
当 onPress if called => 我正在尝试调用fetchCryptoStats
但在状态设置后没有被调用。我需要更新的“selectedItem”传递给函数。我正在阅读生命周期挂钩,这是我收到的指导,但没有调用该函数......有什么建议吗?
<ListItem
bottomDivider={true}
onPress={() => {
this.setState(
{
setModalVisible: true,
selectedItem: symbol.toUpperCase(),
},
function () {
console.log(this.state.selectedItem);
this.fetchCryptoStats(this.state.selectedItem);
},
);
}}>
解决方案
我的建议是创建一个函数并执行你的函数 fetchCryptoStats 得到答案然后推送你的新状态
在那种环境中,您不能使用此状态this.state.selectedItem
,因为它是异步useState
的,尚未更新,您应该使用它symbol.toUpperCase()
,因为它的值相同
selectedItem: symbol.toUpperCase()
那么你的代码将是这样的
const handlePress=()=>{
const newVar = this.fetchCryptoStats(symbol.toUpperCase()) //here
const newState= {
setModalVisible: true,
selectedItem: symbol.toUpperCase(),
yourAttribute: newVar,
}
this.setState(newState);
}
onPress={handlePress}
推荐阅读
- java - 如何在 Java 中向下移动表格?
- flutter - Json解析失败_InternalLinkedHashMap
' 不是 'String 类型的子类型 - reactjs - 如何传递密钥来反应路线?
- python - python脚本中的wkhtmltopdf不适用于cronjob
- sql - Hive sql找出每个国家有多少共同客户
- php - Laravel 合并数组
- javascript - 最大长度参数的排列
- javascript - 我有 2 个类在页面上创建元素并显示它的问题
- javascript - 更新 Firestore 文档时可以动态更改键和值吗?
- django - 在 Elastic Beanstalk 上运行集中式服务