setState異步同步問(wèn)題

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

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庫(kù)控制,則為異步,alert值為"alpha"。
那么,如何alert出"beta"呢?

方法1

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

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

方法2

async/await實(shí)現(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)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AI閱讀 16,171評(píng)論 3 119
  • 巴赫是微風(fēng)細(xì)雨的沉思,清澈河灘上羊群安詳?shù)厣⒉?。亨德?tīng)柺谴蠛2写W亮,掛滿風(fēng)暴帶來(lái)的清冽水珠。-肖復(fù)興
    晚霞消失之時(shí)閱讀 204評(píng)論 0 0
  • ↓我是安倍 我說(shuō)的算 ↓狗腿子的原創(chuàng)者 ↓不是因?yàn)橥党圆艓У?而是為了防爆 ↓主銀 你還是人嗎 ↓大爺 進(jìn)來(lái)玩玩唄...
    小葵圖文同步閱讀 254評(píng)論 0 0
  • 居醫(yī)家養(yǎng)生12法 中醫(yī)養(yǎng)生的方法非常多,但是在日常生活中中醫(yī)養(yǎng)生主要可以分為以下12點(diǎn)。 1、睡醒后賴床三分鐘 在...
    天空下的一片閱讀 297評(píng)論 0 0

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