![](/img/trans.png)
[英]React useState in functional components not updating the property values immediately
[英]Prevent loading components with default values in React useState
我正在打字稿反應中使用偏移分頁。
我有兩個包含pageNumber
和offset
。 默認頁面設置為1
,默認偏移設置為0
,如下所示。
useState
鈎子
const [currentPage, setCurrentPage] = useState(1);
const [calculatedOffset, setCalculatedOffset] = useState(0);
加載時,組件從localStorage
獲取pageNumber
和calculatedOffset
並更新 useState 值的默認值。
useEffect
掛鈎
useEffect(() => {
if (typeof window !== "undefined") {
const integerPage = parseInt(localStorage.getItem("currentPage") || "1");
setCurrentPage(integerPage);
const integerOffset = parseInt(localStorage.getItem("calculatedOffset") || "0");
setCalculatedOffset(integerOffset);
}
}, []);
問題:
我面臨的問題是,每當組件加載時,它都會加載默認狀態的值,即pageNumber: 1, calculatedOffset: 0
半秒,然后將其更改為更新狀態,即useEffect
時更新的狀態鈎跑了。 因此,在每次加載時,組件都會在從 localStorage 獲取的更新狀態結束之前刷新默認狀態的數據。
有沒有一種方法可以讓組件僅在狀態最終達到最終值時加載,並防止每次加載組件時舊狀態閃爍半秒?
useEffect
在組件完全渲染后運行。 所以在這之前, useState
已經被用來初始化你的組件最初呈現的變量。
為了防止根據useState
的初始化值進行初始渲染,在useState
和組件中將兩者都設置為null
, useState
渲染元素:
{!currentPage || element}
或者
{currentPage && element}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.