Не вызывать отправку формы по нажатию на кнопку внутри нее

155
25 ноября 2018, 18:00

Я создаю реакт компонент, содержащий в себе элементы, одним из которых является форма содержащая кнопки. Так как кнопки внутри формы, по-умолчанию, они пытаются отправить post-запрос. Мне нужно остановить процесс отправки по нажатию на кнопку. Так же по нажатию на кнопку должна вызываться моя функция.
Не знаю как одновременно по нажатию вызвать нужную мне функцию и отменить отправку. Код создания кнопки:

React.createElement(
  "button",
  {className:"btn",onClick:this.signUpState},
  'Sign In'
),

Вот код функции, вызываемой по нажатию на кнопку:

this.signUpState=()=>{
 console.log("Hello!");
};

Остановить отправку можно с помощью метода :

e.preventDefault();

Как это записать в код?
Были попытки написать так:https://jsfiddle.net/n5u2wwjg/156435/

Answer 1

Основная причина такого поведения - если у вашей кнопки не стоит type="button" то по умолчанию считается type="submit". Отсюда и автоматическая отправка формы по нажатию.

Поскольку в реакте вы работаете с компонентами и их состоянием, то лучше вообще избавиться от <form>, чтобы избежать нестандартного поведения. Поскольку из-за стандартного поведения форм, будет Submit не только на кнопке, но и на Enter в любом из input

Если же форма нужна, то событие надо ловить не на кнопке, а на форме.

<form onSubmit={this.onSubmit}
    ...
</form>
onSubmit = (e) => {
    e.preventDefault();
}
READ ALSO
Выводить текущую дату по умолчанию на JS?

Выводить текущую дату по умолчанию на JS?

Нашел в сети готовый код на JS расчета предполагаемой даты родовС кодом все ОК, он прост и понятен

349
Получить из спрайтов *.gif

Получить из спрайтов *.gif

Я новичок в PHP и JSХотел выполнить тривиальную задачу, скачать себе на ПК анимированные стикеры из ВК, думаю, CTRL+SHIFT+U+найти путь до нужной gif и дело...

159
Найти и вырезать элемент

Найти и вырезать элемент

На странице 1 выводится страница 2 в <iframe>

131