我可以在條件內使用React掛鉤嗎?

不。

我不知道為什麼從技術上講,但這是不可能的。

在與SWR合作時,我偶然發現了這一點,尤其是useSWR鉤。

const ({ data } = useSWR(`/api/user`, fetcher)

我只想在用戶登錄時從API檢索一些數據,我認為“好,我可以做到”:

let data

if (loggedIn) { ;({ data } = useSWR(/api/user, fetcher) }

但不是。

React會在控制台中引發錯誤,可能是讀取以下內容的錯誤:

警告:React已檢測到Course調用的Hooks順序發生了變化。如果未修復,將導致錯誤和錯誤。

解決方案將根據所使用的掛鉤而有所不同。在這種情況下,useSWR鉤,因為我可以通過null而不是API端點,以避免加載數據:

const ({ data } = useSWR(loggedIn ? `/api/user` : null, fetcher)

我把有條件的裡面掛斷電話,這使它對我有用。

免費下載我的反應手冊


更多反應教程: