Не могу отправить форму из-за 2ух кнопок c type='submit' в ней
Я использую реакт с хуком useForm. Мне нужно сделать так, что бы когда я сабмитил форму, я мог понять с помощью какой кнопки она отправляется "Войти" или " Зарегистрироваться" и уже в зависимости от этого отправлял запрос с разными методами входа или регистрации.
На данный момент в метод onSubmit приходит только данные формы. Было бы не плохо что бы с этими данными приходило и name кнопки. Или если это не возможно, буду благодарен если подскажите другой подход.
Ответы (1 шт):
Автор решения: Евгений Платов
→ Ссылка
функция onSubmit принимает вторым аргументом event, от туда можете извлечь источник отправки формы. Вот пример
function App() {
const { register, handleSubmit, watch, errors } = useForm();
const loginBtn = useRef(null);
const registerBtn = useRef(null);
const onSubmit = (data,event) =>{
if(event.nativeEvent.submitter === loginBtn.current){
console.log('LOGIN',data);
}
else if(event.nativeEvent.submitter === registerBtn.current){
console.log('REGISTER',data);
}
}
return (
<form onSubmit={handleSubmit(onSubmit)}>
<label>Example</label>
<input name="example" defaultValue="test" ref={register} />
<label>ExampleRequired</label>
<input
name="exampleRequired"
ref={register({ required: true, maxLength: 10 })}
/>
{errors.exampleRequired && <p>This field is required</p>}
<button ref={loginBtn} type="submit">Войти</button>
<button ref={registerBtn} type="submit">зарегистрироваться</button>
</form>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

