Встречается на собеседованиях • сегодня
Как React Hooks сравнивают deps между собой
React Hooks используют поверхностное сравнение (shallow comparison) для проверки изменений в массиве зависимостей. Это означает, что сравниваются ссылки на объекты/массивы, а не их содержимое.
js
const prevDeps = [1, {a: 2}];
const nextDeps = [1, {a: 2}];
// Будет считаться изменением, так как объекты разные по ссылкеВажные нюансы:
- Примитивы сравниваются по значению
- Объекты/массивы сравниваются по ссылке
- Если передать новый массив с теми же значениями - хук сработает снова
- Для объектов лучше выносить вычисления в
useMemo
Пример проблемы:
js
useEffect(() => {
// Срабатывает при каждом рендере
}, [{id: 1}]);Решение:
js
const config = useMemo(() => ({id: 1}), []);
useEffect(() => {
// Сработает только один раз
}, [config]);
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы