首頁 > web前端 > js教程 > 在 React 中呼叫 setState() 後如何立即存取更新的狀態值?

在 React 中呼叫 setState() 後如何立即存取更新的狀態值?

Linda Hamilton
發布: 2024-12-16 16:35:15
原創
941 人瀏覽過

How Can I Access Updated State Values Immediately After Calling setState() in React?

React 的狀態傳播難題

React 的setState() 方法在嘗試在更新後立即檢索更新的狀態值時提出了挑戰。這是由於 setState() 的非同步性質所造成的。

請考慮以下程式碼:

let total = newDealersDeckTotal.reduce((a, b) => a + b, 0);

console.log(total, 'tittal'); // Outputs correct total
setTimeout(() => {
  this.setState({ dealersOverallTotal: total });
}, 10);

console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1'); // Outputs incorrect total
登入後複製

這裡的問題是 setState() 呼叫是非同步的。這表示當第二個 console.log 語句執行時,狀態尚未更新。

為了解決這個問題,可以使用回調模式。這涉及將回呼函數傳遞給setState(),該函數將在狀態變更完成後執行:

this.setState({ dealersOverallTotal: total }, () => {
  console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1');
});
登入後複製

透過採用此方法,控制台日誌語句將僅在狀態更新後執行,確保顯示正確的值。

以上是在 React 中呼叫 setState() 後如何立即存取更新的狀態值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板