setState異步同步問題

關(guān)于setState異步同步的問題,以官方文件中較精確的說法:'它不是保證同步的"。
那么什么時候異步,什么時候同步?
答案是在React庫控制時,異步;否則同步。
如:setState方法寫在

constructor(props){
    super(porps);
    this.state = {
        name:"alpha"
    }
}
test(){
    this.setState({
        name:"beta"
    })
    alert(this.state.name)
}
<TouchableOpacity onPress={()=>this.text()}>
    <Text>Button</Text>
</TouchableOpacity> 

上文TouchableOpacity中,是React庫控制,則為異步,alert值為"alpha"。
那么,如何alert出"beta"呢?

方法1

使用callback回調(diào)函數(shù):

test(){
    this.setState({
        name:"beta"
    },function(){
        alert(this.state.name)
    })
}

方法2

async/await實現(xiàn)異步轉(zhuǎn)同步

constructor(props){
    super(porps);
    this.state = {
        name:"alpha"
    }
}
setStateAsync(state){
    return new Promise((resolve,reject)=>{
        this.setState(state)
    })
}
async componentDidMount(){
    await this.setStateAsync({name:"beta"})
    console.log(this.state.name)
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,229評論 3 119
  • 巴赫是微風細雨的沉思,清澈河灘上羊群安詳?shù)厣⒉?。亨德爾是大海波濤中船帆閃亮,掛滿風暴帶來的清冽水珠。-肖復興
    晚霞消失之時閱讀 206評論 0 0
  • ↓我是安倍 我說的算 ↓狗腿子的原創(chuàng)者 ↓不是因為偷吃才帶的 而是為了防爆 ↓主銀 你還是人嗎 ↓大爺 進來玩玩唄...
    小葵圖文同步閱讀 255評論 0 0
  • 居醫(yī)家養(yǎng)生12法 中醫(yī)養(yǎng)生的方法非常多,但是在日常生活中中醫(yī)養(yǎng)生主要可以分為以下12點。 1、睡醒后賴床三分鐘 在...
    天空下的一片閱讀 299評論 0 0

友情鏈接更多精彩內(nèi)容