[英]Why does a react component render twice?
我已經在組件的渲染中放置了調試器,並且看到它有時會運行兩次,如果不是大部分時間的話。 是不是因為第一次渲染是在組件收到任何道具之前? 第二次是什么時候收到? 我認為組件經歷了安裝,接收道具,然后渲染的生活方式? 還是安裝、渲染、檢查道具,然后重新渲染?
如果組件具有初始道具,則不會重新渲染。 它會重新渲染的唯一原因是它在初始渲染后接收道具,或者您正在更改狀態。
在我之前的問題中,我遇到了一個問題,我引用:
“ ...我知道大多數這些特性(可能還有更多)在函數組件中可用(大多數由鈎子引入),但它們也不能按我的意圖工作,因為它們不完全相同,就像
useEffect(() => {code}, [])
被稱為替換componentDidMount()
,但在安裝時它在我開發的任何應用程序中呈現兩次,傳遞錯誤數據......“
針對這個問題, CertainPerformance回復:
“ ...聽起來您啟用了嚴格模式並且正在執行具有副作用的操作,應該避免這種情況。您可能只需要找出使用功能組件構建代碼的正確方法 - 幾乎任何您想要的do 可以在功能組件中相當優雅地完成,盡管不是絕對所有......”
這讓我進行了一些研究並找到了這個有趣的答案:
這是 StrictMode 的一個有意特性。 這只發生在開發階段,有助於發現渲染階段的意外副作用。 我們只對帶有 Hook 的組件執行此操作,因為它們更有可能在錯誤的地方意外產生副作用。
您可以在GitHub 上閱讀更多相關信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.