Я искал реализацию eslint-plugin-Reaction-hooks , и похоже, что функции useState
* setState
и useReducer
* dispatch
являются статическими c ссылками которые не требуется объявлять в массиве зависимостей в useEffect
.
. Однако это правило не работает должным образом, когда вы пишете пользовательское правило, которое абстрагирует внутренние логики c. например, я создаю пользовательский хук:
const useCustom = () => {
const [number, setNumber] = React.useState(0);
return [number, setNumber];
};
, который затем используется следующим образом:
const [number, setNumber] = useCustom();
React.useEffect(() => {
if (something) {
setNumber(1);
}
}, [something]); // useEffect has a missing dependency: 'setNumber'
Добавление зависимости к массиву, по-видимому, не вызывает дополнительных циклов рендеринга. Однако возникает другой вопрос: Что если мой хук вернет ссылку на значение, возвращаемое из useRef()
, было бы безопасно добавить его в массив зависимостей?