首页 > 解决方案 > 设置状态后未调用函数

问题描述

当 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);
                },
              );
            }}>

标签: react-nativestate

解决方案


我的建议是创建一个函数并执行你的函数 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}

推荐阅读