我有以下代碼:
const iconMap = useMemo(() => ({
HomeStacks: {
iconName: "home",
iconType: "material-community",
},
ActivityStacks: {
iconName: "bell",
iconType: "material-community",
badgeCount: badges["activity"],
},
}), [badges["activity"]]);
而且,出于某種原因,ESLint 從規則“re??act-hooks/exhaustive-deps”中拋出了一個錯誤:
React Hook useMemo 缺少一個依賴項:“徽章”。包括它或洗掉依賴項陣列。eslintreact-hooks/exhaustive-deps
那么,將物件欄位用作依賴項是否無效?
uj5u.com熱心網友回復:
它確實是,但eslint似乎被括號符號訪問器混淆了。在較新版本react-hooks/exhaustive-deps的依賴項串列中使用點表示法是完全沒問題的,但是對于任何會抱怨的用例,您始終可以像這樣將屬性提取到依賴項串列上方的常量(假設您不想抑制警告):
const activity = badges["activity"];
const iconMap = useMemo(() => ({
HomeStacks: {
iconName: "home",
iconType: "material-community",
},
ActivityStacks: {
iconName: "bell",
iconType: "material-community",
badgeCount: activity,
},
}), [activity]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/363221.html
標籤:javascript 反应 反应原生 反应钩子 eslint
