#javascript #reactjs #use-effect
#javascript #reactjs #use-effect
Вопрос:
Я получал это предупреждение из-за отсутствия denpendecy в useEffect:
useEffect(() => {
handleRadioGroup(value)
}, [value])
У React Hook useEffect отсутствует зависимость: ‘handleRadioGroup’. Либо включите его, либо удалите массив зависимостей react-hooks / исчерпывающий-deps
Поэтому я попытался использовать useCallback, чтобы запускать useEffect только при изменении этой функции handleRadioGroup.
const handleRadioSelection = useCallback((value) => {
handleRadioGroup(value)
}, [handleRadioGroup])
useEffect(() => {
handleRadioSelection(value)
}, [value, handleRadioSelection])
Проблема в том, что useEffect выполняется во внутреннем цикле. Если я печатаю функцию useCallback, она каждый раз показывает один и тот же результат. Есть способ удалить это предупреждение, не входя в вечный цикл?
Комментарии:
1. работает ли следующий код для вас ` useEffect(() => {handleRadioGroup(значение) }, [значение, handleRadioGroup])`
2. Нет, происходит то же самое
3. без «useCallback», просто «useEffect» с [value, handleRadioGroup] в зависимости
4. Происходит то же самое, я пробовал это до решения useCallback
5. вы не должны использовать «useCallback» только для устранения предупреждения. Что-то не так с компилятором, зависимость [значение, handleRadioGroup] — допустимы.
Ответ №1:
Эти бесконечные вызовы, как правило, происходят из-за того, что значение переменной в вашем массиве зависимостей, в вашем случае value
или handleRadioSelection
, изменяется внутри перехвата. Если это ваш случай, вам придется переосмыслить свою логику, чтобы убедиться, что значения внутри нее не меняются.