Встречается на собеседованиях • сегодня
Можно ли передать Callback функцию в UseEffect
Да, можно передать callback в `useEffect`, но важно помнить несколько моментов:
1. **Обернуть в useCallback**: Если callback зависит от пропсов или состояния, оберните его в `useCallback`, чтобы избежать лишних ререндеров.
2. **Зависимости**: Укажите callback в массиве зависимостей `useEffect`, иначе эффект будет использовать устаревшее замыкание.
Пример:
```jsx
const MyComponent = ({ onDataFetch }) => {
const [data, setData] = useState(null);
const fetchData = useCallback(async () => {
const result = await fetch('/api/data');
const json = await result.json();
setData(json);
onDataFetch(json);
}, [onDataFetch]);
useEffect(() => {
fetchData();
}, [fetchData]);
return
{data && }
;
};
```
Без `useCallback` эффект будет срабатывать при каждом рендере, так как ссылка на функцию будет меняться.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы