Назад к задачам
Junior — Senior
5

Сохранение объекта класса между рендерами через useRef

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Проведём эксперимент, чтобы увидеть, сохраняет ли хук useRef один и тот же экземпляр класса после каждой перерисовки компонента и меняется ли значение свойства creationTime. В конструкторе и при каждом рендере выводятся соответствующие данные в консоль.

import { useRef, useState } from "react";

class MyClass {
  public creationTime;
  constructor(value: number) {
    this.creationTime = value;
    console.log(value);
  }
}

export default function MyComponent() {
  const classInstanceRef = useRef(new MyClass(new Date().getTime()));
  const [, triggerRender] = useState<Symbol>(Symbol());

  console.log(classInstanceRef.current.creationTime);

  return (
    <div>
      <h1>Hello world</h1>
      <button onClick={() => triggerRender(Symbol())}>
        update state
      </button>
    </div>
  );
}