TGViewer
Free React For Beginners Free React For Beginners @reactbeginners · 3.04K subscribers
Post #287 2.03K
Free React For Beginners Продовжуємо про React ❓Задача № 1 - вивести на сторінку кількість рендерів даного компоненту. Проблема: Падаємо в нескінченний перерендер ❓Задача № 2 - Доскролити до певного елемента в компоненті. Проблема: Тім лід кричить що $ та querySelector бруднять…
Відповідь на попередні задачі

👉 Як правильно написали в коментарях - в обох випадках потрібно використовувати вбудований хук useRef, який призначений для збереження в собі будь-яких даних. Це дуже схоже на useState, але є декілька відмінностей.

1️⃣ Зміна useRef не викликає новий рендер. Дуже зручно якщо нам потрібно зберігати якусь супутню інформацію, яка не потребує перемальовувань, або викликає циклічний рендер, як у задачі № 1.

2️⃣ useRef мутується за допомогою властивості current:

const renderCounter = useRef(0);
renderCounter.current = renderCounter.current +1

Також, в useRef є ще одна корисна можливість "з коробки":

Якщо передати отриманий з ref об'єкт в ref елементу, можна отримати посилання на цей DOM елемент:

export default function App() {
const btnRef = useRef<HTMLButtonElement | null>(null);

useEffect(() => {
btnRef.current?.focus();
}, []);

return <button ref={btnRef}>Btn</button>;
}

💪 Плюс такого підходу полягає в тому, що нам не потрібно орієнтуватися на клас, або id елемента. Коли вони зміняться, в коді нічого не зламається, навіть якщо ваш колега не зверне на це увагу. Плюс React сам відповідає за те, щоб тримати там посилання на актуальну версію DOM елемента. Тільки пам'ятайте, що під час першого рендеру, самогу елементу там ще не буде, оскільки перший рендер відбувається ДО фази монтування DOM елемента в DOM дерево.

П.М. Судячи зі швидкості правильних відповідей потрібно переходити на складніші та цікавіші завдання. Кеш вам завтра принести чи що?)

@reactbeginners
  • 👍 25
  • ❤ 1
  • 🔥 1
More from @reactbeginners
  1. Sep 29, 2026Як і обіцяв - про БЗВП по свіжих слідах (і заодно про процес). У знайомого злетіло бронюва…
  2. Sep 26, 2026Думаю багатьом буде цікаво щось дізнатися про розробоку в ЗСУ Спробою розповісти трохи тог…
  3. Sep 24, 2026Всім привіт. Давно не бачилися, але до телеграму руки все ніяк не доходили. В лінкедині я…
  4. May 24, 2026Київ, співчуваю. Сам сьогодні в цю ніч був на лукьянівці. Як на мене, найважча ніч за всі.…
  5. Dec 31, 2025З новим Роком. Нехай це буде останній рік війни. А росія нехай отримує те на що заслужила.…
  6. Nov 29, 2025Сподіваюся всі живі. Схоже що це був рекордний наліт. Як бачите - путін не зацікавлений в…
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 →