簡體   English   中英

為什么反應組件渲染兩次?

[英]Why does a react component render twice?

我已經在組件的渲染中放置了調試器,並且看到它有時會運行兩次,如果不是大部分時間的話。 是不是因為第一次渲染是在組件收到任何道具之前? 第二次是什么時候收到? 我認為組件經歷了安裝,接收道具,然后渲染的生活方式? 還是安裝、渲染、檢查道具,然后重新渲染?

如果組件具有初始道具,則不會重新渲染。 它會重新渲染的唯一原因是它在初始渲染后接收道具,或者您正在更改狀態。

我之前的問題中,我遇到了一個問題,我引用:

“ ...我知道大多數這些特性(可能還有更多)在函數組件中可用(大多數由鈎子引入),但它們也不能按我的意圖工作,因為它們不完全相同,就像useEffect(() => {code}, [])被稱為替換componentDidMount()但在安裝時它在我開發的任何應用程序中呈現兩次,傳遞錯誤數據......“


針對這個問題, CertainPerformance回復:

“ ...聽起來您啟用了嚴格模式並且正在執行具有副作用的操作,應該避免這種情況。您可能只需要找出使用功能組件構建代碼的正確方法 - 幾乎任何您想要的do 可以在功能組件中相當優雅地完成,盡管不是絕對所有......”


這讓我進行了一些研究並找到了這個有趣的答案:

這是 StrictMode 的一個有意特性。 這只發生在開發階段,有助於發現渲染階段的意外副作用。 我們只對帶有 Hook 的組件執行此操作,因為它們更有可能在錯誤的地方意外產生副作用。

您可以在GitHub 上閱讀更多相關信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM