TGViewer
Codica - корисне про IT Codica - корисне про IT @codica · 2.08K subscribers
Post #5171 131
Ми зібрали 5 питань, на яких часто перевіряють не знання синтаксису, а розуміння того, як працюють JavaScript і React.

Готові перевірити себе? 👇

1. Чому useEffect може працювати з «неактуальним» state?

📌 Питання:

Що буде виводити console.log, якщо натискати кнопку?


function Counter() {
const [count, setCount] = useState(0);

useEffect(() => {
const id = setInterval(() => {
console.log(count);
}, 1000);

return () => clearInterval(id);
}, []);

return (
<button onClick={() => setCount(c => c + 1)}>
{count}
</button>
);
}


📌 Очікувана відповідь:

console.log продовжить виводити 0.

Причина — stale closure.

Callback усередині setInterval замикає значення count із того render, у якому був створений Effect. У нашому випадку це 0.

При цьому count — reactive value, яка використовується всередині Effect, але відсутня в dependency array. Тому Effect не синхронізується з наступними значеннями count.

До речі, правило exhaustive-deps у eslint-plugin-react-hooks саме на це й поскаржиться.

Якщо Effect має реагувати на зміну count, його можна додати в dependencies:


useEffect(() => {
const id = setInterval(() => {
console.log(count);
}, 1000);

return () => clearInterval(id);
}, [count]);


Тоді після зміни count React спочатку виконає cleanup попереднього Effect, а потім запустить Effect знову з актуальним значенням.

Важливий нюанс: у цьому варіанті interval буде перестворюватися при кожній зміні count, тому в реальному коді можуть бути доречними й інші рішення залежно від задачі.

📌 Що перевіряє інтерв'юер:

Чи розуміє кандидат JavaScript closures, React render model, Effects та dependency array, а не просто знає синтаксис useEffect.
More from @codica
  1. Oct 9, 2026🐞 5 шпаргалок для QA, які бережуть нерви перед релізом Коли реліз уже близько, останнє, ч…
  2. Oct 9, 2026📚 Народ, ми тут дещо затіяли. Запускаємо серію IT-шпаргалок на всі випадки життя — від «я…
  3. Oct 9, 2026Тож перша десятка вже тут 📚 Зберігайте, пересилайте друзям і… поїхали читати 🚀 🛒 — поси…
  4. Oct 9, 2026🤖 40 КНИГ, ЩОБ РОЗІБРАТИСЯ В AI — ВІД НУЛЯ ДО AGI Друзі, знайшли для вас аж 40 книг про A…
  5. Oct 8, 2026Post #5192
  6. Oct 8, 2026#codica_js
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →