Встречается на собеседованиях • сегодня
Как добиться срабатывания useEffect при мутировании объекта в dependence
Чтобы useEffect реагировал на изменения объекта в зависимостях, нужно обеспечить новую ссылку на объект при каждом изменении. React сравнивает зависимости по ссылке, а не по содержимому.
javascript
const [user, setUser] = useState({ name: 'John' });
useEffect(() => {
console.log('User changed');
}, [user]); // Сработает только если user получит новую ссылку
// Неправильно - мутирование существующего объекта
const handleChangeBad = () => {
user.name = 'Alice'; // useEffect не сработает
};
// Правильно - создание нового объекта
const handleChangeGood = () => {
setUser({ ...user, name: 'Alice' }); // useEffect сработает
};
text
Для сложных объектов можно использовать JSON.stringify в зависимостях, но это неэффективно. Лучше разбивать объект на примитивы или использовать хук useDeepCompareEffect из библиотеки react-use.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы