簡體   English   中英

React useMemo hook memoize 是否應該使用相同的依賴值重復調用?

[英]Should the React useMemo hook memoize repeat calls with same dependency values?

我有一個問題,即功能組件內的(假的)長時間運行/昂貴的 function 似乎沒有被記住我的想法。

根據我對 memoization 的理解,使用相同的參數值調用 memoized function 只會返回上一次調用的結果。

僅當組件上的值更改不在依賴項列表中時,useMemo(至少在我的應用程序中)才會發生這種情況。 我知道不同的值需要再次運行昂貴的 function,但即使我用以前使用的值(值/原始類型,而不是引用類型/對象)調用 function,它也會再次運行昂貴的 ZC1C425268E68384F1。

要么我沒有完全正確,要么我對 useMemo 所做的理解不太正確(這就是 React.memo 的用武之地嗎?)。

這可以在這個基本的stackblitz中看到。

誰能告訴我我要去哪里錯了。

你在想什么,你可以說 50% 正確。

useMemo不會為同一組參數再次執行代碼,但

它只記住參數的最后一個值。

在您的示例中,當您單擊 + 和 - 按鈕時,您正在從以前的值更改值的value 在第二次單擊時,如果您返回相同的值,這並不意味着 memoize 將返回值而不執行 function。

嘗試添加一個按鈕並單擊它設置相同的當前值setValue(value) ,您將看到沒有重新計算發生。

暫無
暫無

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

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