Предположим, что вы используете React и пишете пользовательский хук useSomething
, который возвращает одинаковую вещь при каждом вызове для одного и того же компонента.
const something = useSomething()
// useSomething() at time X === useSomething() at time Y
Если вы сейчас используете это something
значение внутри useEffect(() => ...)
и вы не передаете something
как зависимость от массива второго аргумента useEffect
, тогда линтер предупредит вас:
React Hook useEffect hasотсутствует зависимость: «что-то».Либо включите его, либо удалите массив зависимостей.(response-hooks / исчерпывающе-deps)
Конечно, ESLint не может знать, что something
всегда будет оставаться идентичным (для компонента), но добавляя неизменяемые вещи, такие как something
, в массив зависимостейuseEffect
каждый раз, когда они используются, действительно раздражает.Простая деактивация react-hooks/exhaustive-deps
также не кажется хорошим решением (равно как и использование // eslint-disable-next-line react-hooks/exhaustive-deps
).
Есть ли лучшее решение, чем ненужное добавление подобных вещей в массив зависимостей useEffect
только дляосчастливить линтера?
Пожалуйста, найдите простую демонстрацию здесь: https://codesandbox.io/s/sad-kowalevski-yfxcn [Редактировать: Пожалуйста, имейте в виду, что проблема заключается в общем шаблоне, описанном выше, а не в этой глупой маленькой демонстрации - целиэтой демонстрации просто показать предупреждение ESLint, ничего больше]
[Редактировать] Пожалуйста, найдите дополнительную демонстрацию здесь: https://codesandbox.io/s/vibrant-tree-0cyn1