> Как передавать данные в обработчик сабмита, помещенный в useCallback в React (React)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Milk and Cartoons
Стек: React
> Пример ответа
Для передачи данных в обработчик сабмита, обернутый в useCallback, используйте замыкание или передачу аргументов через стрелочную функцию. Вот пример:
JSXimport React, { useCallback, useState } from 'react';function MyForm() {const [formData, setFormData] = useState({ name: '', email: '' });// Способ 1: данные уже в замыкании (если они из стейта или пропсов)const handleSubmit = useCallback((event) => {event.preventDefault();console.log('Отправка данных:', formData); // formData из замыкания}, [formData]); // зависимость от formData// Способ 2: передача дополнительных данных через аргументыconst handleSubmitWithExtra = useCallback((event, extraData) => {event.preventDefault();console.log('Данные формы:', formData, 'Доп. данные:', extraData);}, [formData]);return (<form onSubmit={handleSubmit}><inputtype="text"value={formData.name}onChange={(e) => setFormData({ ...formData, name: e.target.value })}/><button type="submit">Отправить</button>{/* Пример с дополнительными данными */}<button onClick={(e) => handleSubmitWithExtra(e, { source: 'кнопка' })}>Отправить с доп. данными</button></form>);}
Ключевые моменты:
-
Если данные уже доступны в компоненте (стейт, пропсы), они автоматически захватываются замыканием
useCallback. Укажите их в массиве зависимостей, чтобы обработчик обновлялся при изменении данных. -
Для передачи уникальных данных (например, ID из цикла) используйте стрелочную функцию в
onSubmitилиonClick, которая вызываетhandleSubmitс нужными аргументами. -
Избегайте передачи объектов или массивов, создаваемых при каждом рендере, без мемоизации - это может привести к лишним ререндерам.
> Похожие задачи по frontend
Работали ли вы с интерцепторами в NestJS
Можно ли вызвать монтирование или размонтирование компонента с помощью key в React
Что будет если у всех элементов списка одинаковый key в React
Что такое React Hook Form и для чего он используется
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью