Delayed State Updates in React: Understanding Asynchronous setState
When working with React components, it's crucial to understand the nature of the setState method.與立即發生狀態更新的命令編程相反,React的Setstate是異步的。這意味著更新狀態不能保證在組件的內部狀態中立即進行反射。
有問題的情況:delayed boardadd modal show flag考慮在React中實現boardAdd組件的摘要: classAdadd擴展了react.component { 構造函數(props){ 超級(道具); this.state = { boardaddmodalshow:false }; this.openaddboardmodal = this.openaddboardmodal.bind(this); } OpenAddboardModal(){ this.setState({boardAddmodalshow:true}); console.log(this.state.boardDmodalshow); } }
當調用OpenAddboard -Modal方法時,它將BoardAddModalShow標誌設置為TRUE並將其值打印到控制台。但是,控制台輸出表明,儘管進行了setState調用,但該值仍然是錯誤的。為什麼?
解決此問題,我們可以將回調函數用作setState的參數。在狀態更新並重新渲染後執行回調:class BoardAdd extends React.Component { constructor(props) { super(props); this.state = { boardAddModalShow: false }; this.openAddBoardModal = this.openAddBoardModal.bind(this); } openAddBoardModal() { this.setState({ boardAddModalShow: true }); console.log(this.state.boardAddModalShow); } }SetState的這種異常性質具有性能增強目的。由於狀態更新觸發了重新租賃,因此使它們同步可能會導致瀏覽器無響應性。通過最大程度地減少不必要的重新渲染並增強用戶體驗,批處理setState調用可以提高性能。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3