> В чем разница между хранением массива в useState и useRef в React (React)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Домклик, Софт Медиа Групп
Стек: React
> Пример ответа
Основное различие между useState и useRef при хранении массива заключается в управлении ререндерами и мутабельностью данных.
useState:
-
При изменении массива через сеттер (например,
setArray([...prev, newItem])) React гарантированно вызывает ререндер компонента. -
Массив считается неизменяемым (immutable) - для обновления нужно создавать новую ссылку на массив.
-
Используется, когда изменение данных должно влиять на отображение (UI).
useRef:
-
Хранит массив в свойстве
.current, и его изменение (например,ref.current.push(item)) не вызывает ререндер. -
Массив можно мутировать напрямую - это быстрее, но не синхронизируется с визуальным состоянием.
-
Подходит для данных, которые не влияют на UI (например, промежуточные вычисления, история действий, ссылки на DOM-элементы).
Пример:
JSXconst [items, setItems] = useState([]); // ререндер при каждом измененииconst itemsRef = useRef([]); // мутация без ререндера// useState — безопасно для отображенияsetItems(prev => [...prev, 'новый']);// useRef — для внутреннего храненияitemsRef.current.push('новый');
Ключевой вывод: useState для данных, управляющих интерфейсом, useRef - для данных, которые не должны вызывать перерисовку компонента.
> Похожие задачи по frontend
Какие преимущества у Next.js
Какие инструменты используются для тестирования React-компонентов
Зачем нужны функции getServerSideProps и getStaticProps в Next.js
Как работают middleware в Next.js
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью