Встречается на собеседованиях • сегодня
Можно ли любой ререндер заменять useMemo или useCallback
Нет, не любой. `useMemo` и `useCallback` предназначены для оптимизации вычислений и предотвращения лишних ререндеров, но они не заменяют все случаи ререндеров.
**Когда использовать:**
- `useMemo` — для мемоизации тяжелых вычислений.
- `useCallback` — для сохранения ссылки на функцию между рендерами (например, колбэки в `useEffect` или пропсах).
**Когда не поможет:**
- Если ререндер вызван изменением пропсов или состояния — тут нужна оптимизация через `React.memo` или правильную структуру компонентов.
- Если компонент зависит от контекста — `useMemo/useCallback` не предотвратят ререндер при изменении контекста.
**Пример:**
```jsx
const HeavyComponent = React.memo(({ data, onClick }) => {
// ...
});
const Parent = () => {
const [count, setCount] = useState(0);
const data = useMemo(() => heavyCalculation(count), [count]);
const onClick = useCallback(() => {}, []);
return ;
};
```
Оптимизация работает только в связке с `React.memo` и правильными зависимостями.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы