Создание контролируемого и неконтролируемого полей ввода

Для первого input используйте value/onChange и state, для второго — defaultValue и ref. При клике читайте первое значение из state, второе из ref.current.value.

Короткий ответ

Что ответить на собеседовании

Для первого input используйте value/onChange и state, для второго — defaultValue и ref. При клике читайте первое значение из state, второе из ref.current.value.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо реализовать два типа полей ввода в React: контролируемый и неконтролируемый. При нажатии на форму в консоль должны выводиться значения этих полей.

import React from "react";

export default function App() {
    const handleSubmit = () => {
        console.log("controlled input value: ");
        console.log("uncontrolled input value: ");
    };

    return (
        <form onClick={handleSubmit}> 
            <input
                placeholder="controlled field"
            />
            <input placeholder="uncontrolled field" />
            <button>Отправить заявку на кредит</button>
        </form>
    );
}

Ответ

Для первого input используйте value/onChange и state, для второго — defaultValue и ref. При клике читайте первое значение из state, второе из ref.current.value.

export default function App() {
  const [value, setValue] = React.useState('');
  const uncontrolled = React.useRef(null);
  const logValues = () => {
    console.log('controlled input value:', value);
    console.log('uncontrolled input value:', uncontrolled.current?.value);
  };
  return <form onClick={logValues} onSubmit={event => event.preventDefault()}>
    <input aria-label="Контролируемое поле" value={value} onChange={event => setValue(event.target.value)} />
    <input aria-label="Неконтролируемое поле" ref={uncontrolled} defaultValue="" />
    <button type="button">Показать значения</button>
  </form>;
}

React импортирован как в условии. onClick формы срабатывает и на кликах по дочерним элементам. Для реальной отправки формы лучше использовать onSubmit и кнопку submit; здесь сохранено требование логировать именно клик, без отправки данных наружу.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее