> В чем разница между хранением массива в useState и useRef в React (React)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Домклик, Софт Медиа Групп

Стек: React

> Пример ответа

Основное различие между useState и useRef при хранении массива заключается в управлении ререндерами и мутабельностью данных.

useState:

  • При изменении массива через сеттер (например, setArray([...prev, newItem])) React гарантированно вызывает ререндер компонента.

  • Массив считается неизменяемым (immutable) - для обновления нужно создавать новую ссылку на массив.

  • Используется, когда изменение данных должно влиять на отображение (UI).

useRef:

  • Хранит массив в свойстве .current, и его изменение (например, ref.current.push(item)) не вызывает ререндер.

  • Массив можно мутировать напрямую - это быстрее, но не синхронизируется с визуальным состоянием.

  • Подходит для данных, которые не влияют на UI (например, промежуточные вычисления, история действий, ссылки на DOM-элементы).

Пример:

JSX
const [items, setItems] = useState([]); // ререндер при каждом изменении
const itemsRef = useRef([]); // мутация без ререндера
// useState — безопасно для отображения
setItems(prev => [...prev, 'новый']);
// useRef — для внутреннего хранения
itemsRef.current.push('новый');

Ключевой вывод: useState для данных, управляющих интерфейсом, useRef - для данных, которые не должны вызывать перерисовку компонента.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью