Сделать виртуальный дескриптор виртуальным, когда ваш класс является полиморфным.
Для useMemo
и useCallback
(что по сути является просто частным случаем useMemo
), если второй аргумент является пустым массивом, значение запоминается один раз и всегда возвращается.
Если второй аргумент опущен, значение никогда не запоминается, а useCallback
и useMemo
ничего не делают.
Возможно, есть какой-то крайний случай, когда вы можете условно запомнить:
useMemo(someValue, shouldMemoize ? [] : null)
Но в подавляющем большинстве случаев второй аргумент как useMemo
, так и useCallback
следует считать обязательным. И действительно, определения Typescript относятся к ним таким образом .
// Require a second argument, and it must be an array
function useCallback<T extends (...args: any[]) => any>(callback: T, deps: DependencyList): T;
// Second argument can be undefined, but must be explicitly passed as undefined, not omitted.
function useMemo<T>(factory: () => T, deps: DependencyList | undefined): T;
Существует открытый запрос на извлечение , который расширяет правило exhaustive-deps
перехвата хуков, так что он вызовет ошибку lint, если второй аргумент пропущен, так что довольно скоро это будет быть ошибкой линтера.